Основные утилиты и интерпретаторы ОС QNX и Linux (стандарта POSIX). Изучение основных команд пользовательского интерфейса, страница 7

При организации конвейера командой | выход первой программы передается на вход второй программы. Использование команды || позволяет организовать логическое ИЛИ, то есть если первая программа завершилась удачно (код возврата 0), то запуск второй программы не происходит, если же первая программа завершилась неудачно, выполняется вторая программа.

Использование команды && позволяет организовать логическое И, то есть если первая программа завершилась удачно, запускается и вторая программы, если же первая программа завершилась неудачно, запуска второй программы не происходит. При испольозвании || и && не происходит передачи информации по каналам от одной программы к другой.

gdb

gdb - debugger (GNU)

Синтаксис:

gdb [опции] [исполняемый_файл] [файл_ядра | pid]

Описание:

После запуска дебаггер считывает команды с терминала. Для получения списка команд служит команда help.

Некоторые команды:

file - загрузка программы для отладки

run - запуск отладки программы

continue - продолжение программы

next - переход к следующему шагу

jump - переход к заданное строке или адресу программы

set args - установить параметры командной строки

break - установить точку останова

Пример работы:

$ qcc 7_gdb.c -o gdb -g

$ gdb

GNU gdb 5.2.1qnx-nto

Copyright 2002 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB.  Type "show warranty" for details.

This GDB was configured as "ntox86".

(gdb) break 7

Breakpoint 1 at 0x804841d: file 7_gdb.c, line 7.

(gdb) next

Cannot find bounds of current function

(gdb) continue

Continuing.

[Switching to process 1720358]

(gdb) break 7

Breakpoint 1, main (argc=1, argv=0x804781c) at 7_gdb.c:7

7               printf("Input two numbers\n");

(gdb) next

Input two numbers

8               scanf("%d %d", &a, &b);

(gdb) next

5 7

9               if ((argc > 1) && (argv[1][0] == 'd'))

(gdb) next

16                      c = a + b;

(gdb) print a

$1 = 5

(gdb) print b

$2 = 7

(gdb) print c

$3 = 0

(gdb) next

17                      printf("%d + %d = %d\n", a, b, c);

(gdb) print c

$4 = 12

(gdb) continue

Continuing.

5 + 7 = 12

Program exited normally.

(gdb) run

Starting program: /home/m15hgun/lab1/gdb

(gdb) set args d

(gdb) continue

Continuing.

[Switching to process 1749031]

Breakpoint 1, main (argc=2, argv=0x8047814) at 7_gdb.c:7

7               printf("Input two numbers\n");

(gdb) next

Input two numbers

8               scanf("%d %d", &a, &b);

(gdb) next

10 5

9               if ((argc > 1) && (argv[1][0] == 'd'))

(gdb) next

11                      c = a - b;

(gdb) next

12                      printf("%d - %d = %d\n", a, b, c);

(gdb) output c

5(gdb) continue

Continuing.

10 - 5 = 5

2.3.Изучение команд и утилит обработки текста

sort

sort - сортировка, склеивание или проверка файлов

Синтаксис:

sort [-m] [-o имя] [-bdfinru] [-t символ] [-k ключ] [+старый_ключ] [файл...]

sort [-c] [-bdfinru] [-t символ] [-k ключ] [+старый_ключ] [файл...]

Описание:

Утилита сортирует строки нескольких файлов и на выходе объединяет результат. По умолчанию строки сортируются по возрастанию и рассматриваются как последовательности символов.

Некоторые опции:

-c - проверить, не отсортирован ли файл

-m - только склеивание файлов

-u - выводить только уникальные строки

-n - интерпретировать поля как числа

-d - сортировать в лексикографическом порядке

-r - обратный порядок сортировки

Примеры работы программы:

$ echo "2

> 3

> 1" | sort

1

2

3

$ echo "1

> 2

> 3" | sort -c; echo "$?"

0

$ echo "1

> 3

> 2" | sort -c; echo "$?"

1

$ echo "10