Next Previous Contents

11. Немного программирования

11.1 Скрипты командного процессора: Файлы .BAT (??? on Steroids)

Если вы использовали .BAT-файлы для создания сокращений для длинных командных строк (я сам так делал), то это может быть достигнуто вставкой соответствующих алиасов (смотрите вышеприведенный пример) в файлы profile или .bash_profile. Но если ваши .BAT-файлы были более сложными, то вы полюбите язык, предоставляемый командным процессором: он мощен, как старый QBasic, если не больше. Он имеет переменные, управляющие структуры, подобные while, for, case, if... then... else, и много других возможностей: он может быть хорошей альтернативой ``настоящим'' языкам программирования.

Для написания скрипта---эквивалента .BAT-файла в DOS все, что надо сделать---написать стандартный ASCII-файл, содержащий инструкции, сохранить его и затем сделать его исполнимым с помощью команды chmod +x <scriptfile>. Для выполнения скрипта наберите его имя.

Предупреждение. Системный редактор называется vi, и по моему мнению большинство новых пользователей найдет его трудным в использовании. Я не буду объяснять, как его использовать; пожалуйста посмотрите эту информацию в книге Matt Welsh или найдите учебное руководство в сети. Здесь достаточно сказать, что:

Примечание переводчика: На самом деле vi -- мощный редактор. Для получения встроенного учебника наберите <ESC>, а затем :help tutor, для получения справки по какому либо разделу наберите <ESC>, а затем :help имя_раздела или команды. Этот перевод был сделан используя вариант этого редактора под названием Vim, дополнительную информацию смотрите на http://www.vim.org.

Хорошим редактором для начинающих является joe: запустив его с помощью команды jstar, вы получите те же самые сочетания клавиш, как и в редакторе, используемом в DOSWin. jed в режиме WordStar или IDE, даже еще лучше. Пожалуйста посмотрите раздел Где найти приложения для того чтобы узнать, где можно найти данные редактора.

Написание скриптов для bash -- это такой необъятный предмет, что сам по себе заслуживает книги и я не буду углубляться в этот предмет. Я просто дам вам пример скрипта командного процессора, из которого вы можете вычленить некоторые базовые правила. Прочитайте справочную страницу bash.



#!/bin/sh

# sample.sh

# это комментарий

# не изменяйте первую строку, она должна быть такой

echo "Система называется: `uname -a`" # использовать вывод команды

echo "Мое имя $0" # Встроенные переменные

echo "Вы передали мне следующие $# параметров: "$*

echo "Первым параметром является: "$1

echo -n "Введите ваше имя? " ; read your_name

echo заметьте разницу: "hi $your_name" # использование кавычек вида "

echo заметьте разницу: 'hi $your_name' # использование кавычек вида '

DIRS=0 ; FILES=0

for file in `ls .` ; do

  if [ -d $\{file\} ] ; then # если файл является каталогом

    DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1

  elif [ -f $\{file\} ] ; then

    FILES=`expr $FILES + 1`

  fi

  case $\{file\} in

    *.gif|*jpg) echo "$\{file\}: графический файл" ;;

    *.txt|*.tex) echo "$\{file\}:  текстовый файл" ;;

    *.c|*.f|*.for) echo "$\{file\}: файл исходных текстов" ;;

    *) echo "$\{file\}: обычный файл" ;;

  esac

done

echo "обнаружено $\{DIRS\} каталогов и $\{FILES\} файлов"

ls | grep "ZxY--!!!WKW"

if [ $? != 0 ] ; then # код завершения последней команды

  echo "ZxY--!!!WKW не найден"

fi

echo "достаточно... наберите 'man bash' если вам нужна дополнительная информация."


11.2 C для вас

В UNIX системным языком является C, любите его или ненавидьте. Также доступны другие языки программирования (Java, FORTRAN, Pascal, Lisp, Basic, Perl, awk...).

Считая, что вы знаете C, существует некоторое количество руководств для тех, кто испорчен использованием Turbo C++ или его собратьев по DOS. Компилятор С в Linux называется gcc и не содержит моргалки и дуделки, которые обычно сопутствуют его аналогам в DOS: нет IDE (Интегрированная среда разработки), оперативной подсказки, встроенного отладчика и т.п. Это просто командно-строковый компилятор, очень мощный и эффективный. Для компиляции стандартного hello.c вам необходимо выполнить команду:


$ gcc hello.c

которая создаст исполнимый файл, названный a.out. Для того, чтобы дать исполнимому файлу другое название, выполните команду:


$ gcc -o hola hello.c

Для подключения к программе библиотеки функций добавьте к командной строке ключ -l<libname>. Например, для подключения библиотеки математических функций:


$ gcc -o mathprog mathprog.c -lm

(Ключ -l<libname> заставляет gcc подключить библиотеку /usr/lib/lib<libname>.so; так что -lm подключает библиотеку /usr/lib/libm.so).

Чем дальше, тем лучше, но когда ваша программа состоит из нескольких файлов исходных текстов, то вам понадобиться пользоваться утилитой make. Предположим, что вы написали разбор выражений: его файл исходных текстов называется: parser.c и подключает два заголовочных файла, parser.h и xy.h. Затем вы хотите использовать подпрограммы из parser.c в программе, допустим calc.c, которая подключает файл parser.h. Что за неразбериха! Что вам надо сделать для компиляции calc.c?

Вам необходимо написать так называемый Makefile, который сообщает компилятору зависимости между файлами исходных текстов и объектными файлами. В нашем примере:



# Это Makefile, используемый для компиляции calc.c

# Нажмите клавишу <TAB> где показано!



calc: calc.o parser.o

<TAB>gcc -o calc calc.o parser.o -lm

# calc зависит от 2-х объектных файлов: calc.o и parser.o



calc.o: calc.c parser.h

<TAB>gcc -c calc.c

# calc.o зависит от двух файлов исходных текстов



parser.o:  parser.c parser.h xy.h

<TAB>gcc -c parser.c

# parser.o зависит от трех файлов исходных текстов



# конец Makefile.


Сохраните этот файл как Makefile и наберите make для компиляции вашей программы; вы также можете сохранить его как calc.mak и набрать make -f calc.mak, и конечно RMP. Вы также можете получить некоторую помощь о функциях C, которые описаны в справочных страницах, раздел 3; например,


$ man 3 printf

Для отладки ваших программ используйте программу gdb. Наберите info gdb для того, чтобы узнать, как использовать отладчик.

Существует большое количество библиотек; среди них первыми вы скорее всего захотите использовать следующие: ncurses (для работы в текстовом режиме), и svgalib (для графики в консоли). Если вы чувствуете себя уверенными для программирования для X11 (это не так трудно), то существуют библиотеки, которые делают написание программ для X11 более легким. Посмотрите информацию на http://www.xnet.com/~blatura/linapp6.html, помня о том, что Gtk становится стандартом для Linux.

Много редакторов могут работать как IDE; например emacs и jed, также они производят подсветку синтаксиса, автоматические отступы, и так далее. Также вы можете взять пакет rhide с ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/. Это клон Borland IDE и есть шанс, что он вам понравится.


Next Previous Contents

Banner.Novgorod.Ru