Тут можно читать онлайн книгу Мэтью Нейл - Основы программирования в Linux - бесплатно полную версию (целиком). Жанр книги: Программирование. Вы можете прочесть полную версию (весь текст) онлайн без регистрации и смс на сайте Lib-King.Ru (Либ-Кинг) или прочитать краткое содержание, аннотацию (предисловие), описание и ознакомиться с отзывами (комментариями) о произведении.
Основы программирования в Linux - описание и краткое содержание, автор Мэтью Нейл, читать бесплатно онлайн на сайте электронной библиотеки Lib-King.Ru.
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Основы программирования в Linux - читать книгу онлайн бесплатно, автор Мэтью Нейл
classic> <b>echo $version</b>classicclassic> <b>. /latest_set</b>latest version> <b>echo $version</b>latestlatest version>Как это работает
Сценарии выполняются, используя команду "точка", поэтому каждый из них выполняется в текущей командной оболочке. Это позволяет сценарию изменять параметры окружения в текущей оболочке, которая сохраняет изменения даже после того, как сценарий завершился.
Несмотря на призыв группы Х/Open применять в современных командных оболочках команду
printfechoПри этом возникает общая проблема: удаление символа перехода на новую строку. К сожалению, в разных версиях ОС UNIX реализованы разные решения. В ОС Linux общепринятый метод
echo -n "string to output"Но вы часто будете сталкиваться и с вариантом
echo -е "string to output\c"Второй вариант
echo -е\c\t\nЕсли вам нужен легко переносимый способ удаления завершающей новой строки, для избавления от нее можно воспользоваться внешней командой
trprintfecho -n#!/bin/bashКоманда eval позволяет вычислять аргументы. Она встроена в командную оболочку и обычно не представлена как отдельная команда. Лучше всего ее действие демонстрирует короткий пример, позаимствованный непосредственно из стандарта X/Open.
foo=10x=fooу='$'$хecho $уБудет выведено
$foofoo=10x=fooeval у='$'$хecho $увыведет на экран 10. Таким образом,
eval$Команда
evalУ команды
execНапример, строка
exec wall "Thanks for all the fish"в сценарии заменит текущую оболочку командой
wallexecВторой вариант применения
execexec 3< afileЭта команда открывает файловый дескриптор 3 для чтения из файла afile. Этот вариант редко используется.
Команда
exit<i>n</i>При программировании сценариев в командной оболочке код завершения 0 — успешное завершение сценария, коды от 1 до 125 включительно — коды ошибок, которые можно использовать в сценариях. Оставшиеся значения зарезервированы в соответствии с табл. 2.5.
Таблица 2.5
| Код завершения | Описание |
|---|---|
| 126 | Файл не является исполняемым |
| 127 | Команда не найдена |
| 128 и выше | Появившийся сигнал |
Многим программистам на языках С и С++ использование нуля как признака успешного завершения может показаться несколько необычным. Большое преимущество сценариев — возможность применения 125 кодов ошибок, определенных пользователем, и отсутствие необходимости в глобальной переменной для хранения кода ошибки.
Далее приведен простой пример, возвращающий код успешного завершения, если в текущем каталоге существует файл с именем .profile.
#!/bin/shif [ -f .profile ]; then exit 0fiexit 1Если вы любитель острых ощущений или, как минимум, лаконичных сценариев, можете переписать сценарий в виде одной строки, используя комбинацию И-списка и ИЛИ-списка, описанных ранее:
[ -f .profile ] && exit 0 || exit 1Команда
exportexportexport1export2