При организации конвейера командой | выход первой программы передается на вход второй программы. Использование команды || позволяет организовать логическое ИЛИ, то есть если первая программа завершилась удачно (код возврата 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.