2.3.2 История команд

 

csh поддерживает так называемый буфер команд в котором храняться последние введенные команды называемые событиями. Размер буфер определяет переменная history. Переменная savehistory определяет сколько команд буфера подлежит сохранению перед выходом из шела. Наиболее оптимальным размером буфера считается буфер на 10 … 20 команд. Просмотр буфера возможен по команде history. Подстановка команд из буфера осуществляется с использованием символа восклицательного знака ( ! ). Переменная prompt отвечает за вид системоной подсказки.

Например, выполнив команду:

% set prompt='[\!] % '

[2] %

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

·     По номеру события: !n где n – это номер события в буфере

·     Относительному номеру события относительно текущего события: !-n

·     Тексту события: !word где word – первые несколько символов события. Например набрав один раз команду history, в следующий раз можно использовать вместо этого команду !h.

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

csh также допускает использование аргументов команд находящихся в буфере при посторении новых команд. Каждый аргумент в событии хранящемся в буфере нумеруется начиная с нуля (нулевой аргумент – имя самой команды). Последний аргумент еще представляется знаком ( $ ), первый аргумент знаком ( ^ ). Для ссылки на на аргумент события нужно после номера события через двоеточие ( : ) ввести номер аргумента или его обозначение. Например:

cruiser 4: ls -l .cshrc

-rw-r--r-- 1 roman users 814 Jan 2 23:08 .cshrc

cruiser 5: history

1 ls -l .profile

2 history

3 cat .profile

4 ls -l .cshrc

5 history

cruiser 6: cat !4:$

cat .cshrc

#

# Default user .cshrc file (/usr/bin/csh initialization).

set path=( $path )

# Set up C shell environment:

if ( $?prompt ) then  # shell is interactive.

set history=20 # previous commands to remember.

set savehist=20 # number to save across sessions.

set system=`hostname` # name of this system.

set prompt = "$system \!: " # command prompt.

endif

2.3.3 Алиасы, подстановка команд, метасимволы

 

csh предоставляет дополнительные удобства в виде командных алиасов. Например, вместо того чтобы каждый раз при необходимости вывести полный листинг директории или при выходе из шелла набирать набирать полные команды, можно создать их сокращенные псевдонимы (dir и x):

alias dir ls –als

alias exit x

для снятия алиаса нужно воспользоваться командой unalias :

unalias dir

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

Подстановка команд

Подстановка команд в csh выполняется полностью аналогично подстановке в Bourne Shell рассмотреной перед этим:

cruiser 7: set dir=`pwd`

cruiser 8: echo $dir

/home/roman

cruiser 9:

Метасимволы

 

Все етасимволы включая синтаксические ( ; | () & || && ) а так же файловые ( ? * [] ~ ) и метасимволы квотинга ( \ ‘ “ ) в csh имеют тот же смысл что и рассмотренные перед этим в Bourne Shell.

2.3.4 Переменные csh

Имя переменной

Описание

$argv

Список аргументов командной строки

$autologout

Авто логаут если шеллом не пользовались спустя количеству секунд указанному в этой переменной. Неустановленное или нулевое значение отключает авто логаут.

$cwd

Указатель текущей рабочей директории

$home

Домашняя директория

$ignoreeof

Если переменная установлена, то гнорировать символ конец файла (Ctrl-D) как символ завершения работы

$noclobber

Если переменная установлена, то запретить перенаправление вывода в существующий файл (операция > ). Перенаправление возможно лишь с использованием операции >!

$notify

Если переменная установлена то посылать немендленные уведомления после окончания фоновых процессов

$path

Путь для поиска выполняемых файлов. При изменении этой переменной нужно уведомить шелл выполнив команду rehash

$prompt

Вид системной подсказки

$status

Код возврата самой последней команды

Цифровые переменные csh

Команда at ( @ ) назначает цифровой переменной арифметическое значение, точно так же как и команда set назначает значение стороковой переменной. Значением цифровых переменных являются десятичные целые.

% @ sum=( 1 + 2 )

% echo $sum

3

Основные арифметические операции в csh

Операция

Описание

( ) Скобки изменяют порядок выполнения операций
+ Сложение
- Вычитание
* Умножение
/ Деление
% Остаток от деления

Основные логические операции в csh

Операция

Описание

== Проверка на равенство
!= Пооверка на неравенство
! Логическое отрицание

Кроме этих операций есть еще ряд логических операций которые должны быть взяты в скобки и их операнды должны ьыть разделены пробелами в виде ( operand1 >= operand2 )

Операция

Описание

Больше
Меньше
>= Больше или равно
<= Меньше или равно
>>  Правый битовый сдвиг
<<  Левый битовый сдвиг
& Битовое И
| Битовое ИЛИ
&& Логическое И
|| Логическое ИЛИ

Например:

% @ r= ( 2 << 4 )

% echo $r

32

Основные операции присвоения в csh

Операция

Описание

= Простое рисвоение а = b
+= a = a + b
-= a = a - b
*= a = a * b
/= a = a / b
%= a = a % b

Постфиксные операции

К последним относятся операции ++ и --

% @ a=10

% @ a++

% echo $a

11

Основные файловые операции

Виражения в csh могут возвращать значение в зависимости от наличия или отсутствия файла, прав доступа к нему, и.т.п. Для этого используется следующий синтаксис:

-file_test filename

где file_test и filename могут принимать следующие значения

file_test

описание

d Является ли файл директорией ?
e Существует ли файл ?
f Это обычный файл ?
o Являюсь ли я его собственником ?
r Имеются ли права на чтение из файла ?
w Имеются ли права на запись в файл
x Можно ли исполнять этот файл ?
Z Пустой ли файл

 

2.3.5 Задания

Каждый раз когда одна или больше команд (например связанные через пайп, или последовательно) выполняються шелл создает один блок команд назывемый заданием. Фактически каждая строка введенная в строке шелла является заданием. Задание может исполняться также в фоновом режиме если при запуске в конце стоял символ &. В этом случае после запуска шелл выдаст номер задания в своей таблице заданий и номер процесса. Просмотреть таблицу активных в данный момент заданий можно воспользовавшись командой jobs . После завершения фонового процесса шелл проинформирует пользователя об этом.

% sleep 10 &

[1] 73059

% jobs

[1] + Running sleep 10

% ps

PID TTY TIME COMMAND

71453 pts/2 0:00.03 -sh (csh)

73059 pts/2 0:00.00 sleep 10

73061 pts/2 0:00.00 ps

…. Спустя 10 секунд ….

%

[1] Done sleep 10

2.3.6 Скрипты

сsh крипты могут как и Bourne Shell скрипты быть запущены двумя способами. Либо

csh script_file arg1 arg2 ….

либо установив атрибут исполняемости на файл и запустив его

chmod +x script_file

./script_file arg1 arg2 ….

При этом первая строчка должна содкржать полный путь к интерпретатору с префиксом #! , в нашем случае она должна выглядеть так: #!/usr/bin/csh . Без этой строчки система в качестве интерпретатора скрипта запустит Bourne Shell что приведет к ошибке.

При запуске csh помещает аргументы скрипта в массив argv доступ к которым возможее через argv[1], argv[2], … Аргумента argv[0] не существует, вместо этого имя скрипта помещается в аргумент $0.

Для проверки установлена ли данная переменная можно воспользоваться конструкцией

$?variable

 

Чтобы узнать сколько значений хранит переменная нужно использовать следующий синтаксис:

$#variable

Для доступа к компонентам переменной необходимо следовать следующему правилу:

$variable[componet_number]

Также как и в Bourne Shell возможно использование переменных $n вместо argvn и $* вместо $argv. В отличии от команды read в Bourne Shell csh использует конструкцию $< для интерактивонго ввода.

Все вышесказанное иллюстрируется на следующих примерах:

% echo $#var1

var1: Undefined variable.

% set var1=a

% echo $#var1

1

% set var1=(a b c)

% echo $#var1

3

% echo $var1[1]

a

% echo $var1[1-3]

a b c

% set a=($<)

xxx

% echo $a

xxx

Еще одно отличие csh от Bourne Shell заключается в том что с помощью фигурных скобок { } можно проверять завершилась ли нормально команда помещенная в эти скобки. Например, следующий скрипт:

#!/usr/bin/csh

if ({ cat /tmp/aaa }) then

echo OK

endif

в случае успешного вывода содержимого файла /tmp/aaa напечатает в конец фразу OK.


Информация о работе «Администрирование локальных сетей»
Раздел: Компьютерные науки
Количество знаков с пробелами: 374863
Количество таблиц: 43
Количество изображений: 26

Похожие работы

Скачать
36318
2
2

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

Скачать
68403
1
1

... надёжность системы, данный стандарт с успехом применяется в магистральных каналах связи. Сравнительный анализ существующих технологий представлен в Приложении А. 2. АНАЛИЗ И КОМПЛЕКС МЕРОПРИЯТИЙ ПО ОБСЛУЖИВАНЮ ЛОКАЛЬНОЙ СЕТИ СЛУЖБЫ ПО ДЕЛАМ ДЕТЕЙ СЕВЕРОДОНЕЦКОЙ ГОРОДСКОГО СОВЕТА   2.1 Административные, технические и программные характеристики Службы по делам детей Северодонецкой городской рады ...

Скачать
59974
6
46

... концентратора, требуется также сетевой кабель, так называемый двужильный провод Ethernet RJ-45 (10BaseT или 100BaseT), который немного больше обычного телефонного кабеля. 3. Создание локальной сети 1. Обнаружение параметров сети. 2. Выбираем параметры настроек. 3. Задание корня DNS-имени ZALMAN. local. 4. Настраиваем IP-адрес и адрес DNS-сервера. 5. Локальные ...

Скачать
44395
3
16

... разнообразием активного коммутационного оборудования, которое применяется для локальных и глобальных связей. В данном разделе были рассмотрены стандарты беспроводного доступа к сети Интернет. Так же был рассмотрен вопрос о назначении локальной сети. 2. Конструкторская часть   2.1 Выбор и обоснование технологий построения ЛВС Исходя из технического задания, для связи рабочих станций в ...

0 комментариев


Наверх