Мегаобучалка Главная | О нас | Обратная связь


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



2019-07-04 240 Обсуждений (0)
Алиасы, подстановка команд, метасимволы 0.00 из 5.00 0 оценок




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 Пустой ли файл

Задания

 

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

 

Скрипты

 

с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.

 



2019-07-04 240 Обсуждений (0)
Алиасы, подстановка команд, метасимволы 0.00 из 5.00 0 оценок









Обсуждение в статье: Алиасы, подстановка команд, метасимволы

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (240)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)