Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.




Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

Next Previous Contents

8. Немного Программирования

8.1. Скрипты shell: .BAT файлы, объевшиеся стероидов

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

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

Предупреждение. Системный редактор называется vi, и, по моему опыту, новички находят его очень трудным для использовании. Я не собираюсь объяснять, как им пользоваться, потому что мне он не нравится, и я не пользуюсь им. Так что могу рассказать про него следующее:

  • Чтобы вставить текст, напечатайте "i", затем ваш текст;
  • Чтобы удалить символы, напечатайте <ESC> затем "x";
  • Чтобы выйти из vi без сохранения, напечатайте <ESC> затем :q!
  • Сохранить и выйти, напечататйте <ESC> затем :wq.

Хороший редактор для новичка - joe: вызовите его, напечатав jstar, и вы получите очень знакомый по DOS редактор. Jed в WordStar или IDE режиме даже лучше. Пожалуйста, обратитесь к разделу "Где найти приложения", чтобы узнать, где можно найти эти редакторы.

Написание скриптов под bash - это такой обширный предмет, что требуется книга, и я не буду углубляться в эту тему дальше. Я только дам Вам пример скрипта shell, из которого Вы можете извлечь некоторые основные правила:



  #!/bin/sh

  # sample.sh

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

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

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

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

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

  echo "Первый параметр: "$1

  echo -n "Как ваше имя? " ; считывание вашего имени

  echo notice the difference: "Здорово, $your_name" # использование "

  echo notice the difference: 'Здорово $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', если вам нужно больше информации


8.2. C для Вас

В UNIX системный язык - C, вызывающий или любовь, или ненависть. Также доступны и множество других языков (Java, ФОРТРАН, Паскаль, Lisp, BASIC, Perl, awk ...).

В предположении, что в знаете C, имеется пара руководящих принципов для тех из Вас, кто испорчен Турбо 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>; .a; так -lm связан с /usr/lib/libm.a).

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

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





  # this is makefile, used to compile calc.c

  # Press the <TAB> key where indicated!



  calc: calc.o parser.o

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

  # calc depends on two object files: calc.o and parser.o



  calc.o: calc.c parser.h

  <TAB>gcc -c calc.c

  # calc.o depends on two source files



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

  <TAB>gcc -c parser.c

  # parser.o depends on three source files



  # end of makefile.


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


       $ man 3 printf

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

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

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


Next Previous Contents


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют