Краткий обзор того, как записать и скомпилировать программы в Усовершенствованном Программировании в UNIX® Environment благодаря slm для помощи мне понять шаги. Можно загрузить исходный код отсюда. Мне жаль, что эта информация не была включена как часть приложения b книги, где заголовочный файл объяснен.
Несжатый файл содержит каталоги с названиями глав, и два других назвали include
и lib
. У тех с названиями глав есть все программы той главы в них.
include
каталог содержит заголовочный файл, который используется в большинстве программ в книге: apue.h
. lib
каталог имеет исходный код реализаций для того заголовка.
Позволяет предполагают, что несжатый файл расположен в: SCADDRESS/
, например, это могло бы быть: /home/yourid/Downloads/apue.3e/
После того как Вы распаковываете исходный код, входите в каталог и работаете make
:
$ cd SCADDRESS
$ make
make
скомпилирует все программы во всех главах. Но важная вещь состоит в том, что прежде, который, это сделает библиотекой, которая будет содержать реализации функций в apue.h
.
Для компиляции примера программы, который Вы пишете из книги работайте, эта команда GCC (берущий имя Вашей программы myls.c
который является первым в книге):
gcc -o myls myls.c -I SCADDRESS/include/ -L SCADDRESS/lib/ -lapue
-I
говорит gcc
какой каталог искать включать файл. -L
говорит этому местоположение каталога библиотеки, и -lapue
, говорит названию файла библиотеки искать в том каталоге. Таким образом, что-LXXX означает искать файл в каталоге библиотеки с именем: libXXX.a или libXXX.so.
Если вы хотите, чтобы в выводе было только foo
, то
printf '%s' 'foo.bar\033[00m' | sed 's/\.bar\\033\[00m//'
обратите внимание, что и \
, и [
должны бежать от другого \
. Дополнительно я добавил '%s'
в printf
для печати вводимых символов в виде буквенной строки, в противном случае \033[
может быть интерпретирован как экранирующий код, за которым следует цвет ANSI.
После редактирования вопроса: Если ваш файл содержит управляющие символы типа
printf "foo.bar\033[00m" > file
, то для его замены запишите следующее:
sed 's/\. bar
Ctrl-vESC\[00m//'
После нажатия Ctrl-vESC на экране должны появиться ^[
, но не буквальные ^
и [
(два символа), а один управляющий символ.
Вам нужно удалить символы [
и \
с обратным слешем:
printf '%s' "foo.bar\033[00m" | sed 's/\.bar\\033\[00m//'
Или же, если вы хотите удалить все после символа точки в строке:
printf "foo.bar\033[00m" | sed 's/\..*//'