#Арифметические операции
set a = …; set c = …;
@ b = $a + $c
echo "$b" `#b` ${b}10
@ b -= $a
echo $b
@ c = $b * $a - 1
echo $c
@ d = ( $c + 2 ) / $b
echo $d
@ c %= $b
echo $c
#Поразрядные логические операции
@ a = ( $c | ( $b + 4 ) )
echo $a
@ b = ( $a & $b )
echo $b
@ c = ( $a ^ $c )
echo $c
@ f = ( $a << 3 )
echo $f
@ f = ( $c >> 1 )
echo $f
#Логические операции и операции отношения
@ a = ( ( $b >= $c ) && ( $d <= $f) )
@ b = ( ( $c!= $a) || ( != b ) )
#Подстановка вывода команды
set f = (`date`)
echo $f
4. Содержание отчета
Краткое описание каждой исследуемой операции и команды C-shell, результаты действий с переменными.
5. Контрольные вопросы
5.1. Назначение внутренних переменных и способы изменения их значений.
5.2. Что такое стандартный ввод и вывод, способы их переназначения.
5.3. Операции в языке C-shell.
5.4. Управление последовательностью выполнения команд в языке C-shell.
5.5. Передача параметров в командные файлы и процедуры.
5.6. Область действия переменных.
5.7. Операторы цикла, условный оператор и оператор выбора.
5.8. Внешние переменные C-shell.
5.9. Переменные окружения: создание, время жизни и область действия.
5.10. Управление процессами в csh.
5.11. Перенаправление ввода, вывода и вывода ошибок в bourne shell.
5.12. Передача на терминал управляющих символов в shell и C-shell.
5.13. Ввод с терминала в командном файле. Приведите пример для sh и csh.
Лабораторная работа N5
Изучение командного языка C-shell
1. Цель работы
Cоздание файлов настройки и освоение программирования в среде
C-shell.
2. Основные положения
При входе пользователя в систему интерпретатор считывает и
выполняет файлы. cshrc и. login, а при завершении работы - файл
.logout. Если в регистрационном каталоге есть файл. history, то
из него считывается протокол предыдущих сеансов.
Командные файлы на языке C-shell обычно начинаются со
строки #/bin/csh. Вообще, символ # в начале строки означает, что
строка содержит комментарий.
В интерпретаторе C-shell есть механизм назначения
альтернативных имен командам. С помощью команды 'alias' можно
задать список коротких псевдонимов для часто используемых команд.
Например:
alias a alias
a l ls - la
Для отмены псевдонима есть команда 'unalias'.
C-shell записывает в отдельный файл протокол сеанса работы
в виде списка пронумерованных командных строк.
Примеры повторного использования команд:
!n!* !n:l-m
!! !n:m!$
Синтаксис вызова csh:
csh [keys] [args]
Ключи:
-c команда с единственным параметром после - c
-e прекратить работу в случае неуспешного выполнения
любой команды
-f запретить выполнение файла. cshrc для быстрого старта
-i запустить оболочку в интерактивном режиме (по умолчанию при
вызове из командной строки)
-n осуществлять разбор, но не выполнять команды (отладка)
-s читать ввод команды из стандартного потока ввода
-t считывать и выполнять толбко одну строку. Для продолжения на
новой экранной строке используется символ '\'
-v после подстановок из истории печатать команду на экране
перед выполнением
-V перед разбором строк из. cshrc установить флаг - v, что
позволит видеть на экране выполнение командных строк
-x печатать на экран все команды перед выполнением
-X установить флаг - х при интерпретации файла. cshrc
Управляющие конструкции языка С-shell:
---Оператор цикла с перечислением---
foreach varname ( word_list )
command_list
end
Переменная varname принимает последовательно значения из
списка слов и для каждого из них выполняется тело цикла.
---Оператор цикла с условием---
while ( expression )
command_list
end
Пока выражение не равно нулю, выполняется список коианд.
В циклах foreach и while можно использовать команды break и
continue.
---Оператор выбора---
switch ( string )
case str1:
command_list_1
breaksw
. . .
case strN:
command_list_N
breaksw
[ default:
def_command_list
breaksw ]
endsw
---Условный оператор---
if ( expression ) then
command_list_1
[ else if ( expression2 ) then
command_list_2
else
command_list_3 ]
endif
Возможно любое количество пар else - if, а endif должен
всегда присутствовать один раз.
3. Порядок выполнения работы
3.1. Создать или модифицировать файлы. cshrc, .login и. logout в
своем регистрационном каталоге.
3.2. Разработать и отладить командный файл согласно заданному
варианту. Программы должны содержать диагностику ошибок
запуска и выполнения.
4. Варианты заданий
N1. Написать командный файл, который из заданного в командной
строке файла выбирает слова, начинающиеся с большой буквы и
записывает их в файл "Upper" в текущем каталоге, а все слова,
начинающиеся с маленьких букв - в файл "Lower", остальные слова
записываются в файл "Misc". Затем все файлы сортируются и
собираются в один - каждый исходный файл в отдельной колонке.
(Можно использовать команды grep, fgrep, sort и pr).
N2. Командный файл, который перемещает из текущего каталога все
файлы с заданными в командной строке расширениями в подкаталоги
текущего каталога с именем, совпадающим с расширением. Если такой
подкаталог отсутствует, его нужно создать. Если нет файлов,
соответствующих какому-либо расширению - выдать сообщение.
N3. Командный файл, который из заданных в командной строке
каталогов рекурсивно уничтожает все файлы с расширением ".o" и
файлы "a. out", запрашивая подтверждение, а файлы с расширением. c
переписывает в подкаталог заданного каталога с именем C_src. При
этом необходимо выдавать сообщения о перемещении по дереву
каталогов и о копировании файлов.
N4. Командный файл, в котором просматриваются все
подкаталоги текущего каталога и создаются два списка
каталогов. Если в просматриваемом подкаталоге число файлов
меньше 10, то список этих файлов со строкой-заголовком -
полным именем подкаталога, дописывают в файл "Littlelist" иначе -
в "Biglist".
N5. Командный файл, который все файлы из каталога /dev,
начинающиеся с символа "r" и являющиеся байториентироваными
помещает в файл "chardevice", а все файлы начинающиеся с "t" в
файл "ttydevice". Каждый файл снабжается заголовком и они
выводятся на экран одновременно, каждый в своей колонке (см.
команду "pr").
N6. Командный файл, который в каталоге, указанном первым
параметром в командной строке, выбирает файлы, владелец
которых указан как второй аргумент команды, и сортирует их
по ключу, указанному третьим параметром командной строки.
Выдавать диагностические сообщения в случае отсутствия каталога,
файлов в каталоге и неправильного использования ключа. (
Предлагается использовать команды sort, ls - l и переменные
типа массив слов).
<proga> <dir><owner><key>
#!/bin/csh
if ( $#argv < 3 ) then
echo "Not enough parameters!"
exit
endif
cd $argv[1] #current dir
set files=`ls - l` #get files
set owner=$argv[2]
set key=$argv[3]
if(!files) then
echo “cant find files in directory: $argv[1]”
exit
endif
echo >resfile. txt
foreach curfile($files)
set own=$curfile[3]
if(own==owner) then
echo curfile>>resfile. txt
endif
end
sort $key resfile. txt
cat resfile. txt
rm resfile. txt
echo “program end work”
N7. Командный файл, который все файлы текущего каталога собирает
в два файла: в первый файл с именем "myfile" все файлы,
владельцем которых является текущий пользователь (т. е. имя с
которым вошли в систему), а в другой файл (с именем "other") -
остальные файлы. Каждый файл снабдить заголовком и вывести
одновременно в две колонки (по одному файлу в колонке),
отсортированными по именам.
N8. Командный файл, который сортирует все файлы текущего
каталога по количеству строк и записывает их имена в файл
"sort_line", по количеству слов - в файл "sort_word" и по
количеству символов - в файл "sort_char". ( Рекомендуется
использовать команду wc и переменные типа массив слов ).
N9. Командный файл, который из каталога, указанного в командной
строке первым параметром (если такого каталога нет - выдача
диагностического сообщения) выбирает имена файлов, начинающиеся
либо с латинской буквы, либо с другого символа в зависимости от
ключа, указанного вторым параметром в командной строке (если
второго параметра нет - выдача диагностического сообщения),
сортирует их по времени создания и выдает их пронумерованный
список в файл "my_sort".
N10. Командный файл, который подсчитывает в каталогах, указанных
аргументом командной строки, общее количество файлов, общее
количество строк, слов и символов во всех файлах. Если
указанного каталога не существует - выдается диагностическое
сообщение.
N11. Командный файл, который в каталоге, указанном первым
аргументом командой строки, выбирает из всех файлов строки, в
которых есть слова, указанные в качестве шаблона вторым
аргументом ком. строки. Выдавать диагностическое сообщение, если
нет заданного шаблона или нет каталога; выводить имена файлов, в
которых есть искомые слова.
N12. Командный файл, который в текущем коталоге оставляет только
файлы созданные пользователем, работающим сейчас в системе
($user), остальные помещает в подкаталог текущего с именем
"other" ( если файлов нет - диагностическое сообщение, если
подкаталог не создан - создать и вывести диагностику ). Затем
вывести полный список текущего каталога и подкаталога "other".
5. Содержание отчета
Содержимое файлов. login, .cshrc и. logout и текст командного файла.
6. Контрольные вопросы
6.1. Операторы цикла в C-shell.
6.2. Условный оператор и оператор выбора.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


