Файл: Операционная система Linux предназначена для персональных компьютеров и рабочих станций.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 106
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
$ mv ../file5
Знак "точка". Каталог, в котором работает пользователь, называется рабочим каталогом. Текущий рабочий каталог можно обозначать знаком "точка" (.).
Пример 9. Пользователь находится в каталоге katal, нужно посмотреть его содержимое. Используется любая из следующих записей: $ ls
или запись: $ ls . Точка здесь означает текущий каталог.
Пример 10. Для копирования из какого-либо каталога в текущий каталог можно использовать знак "точка":
$ cp /home/mykatal/file7 .
Знак "две точки" (..).Переход в родительский каталог обозначается двумя точками "..".
Пример 10. Чтобы не подниматься еще на один уровень вверх, а посмотреть содержимое каталога, в который входит рабочий каталог katal, т.е. содержимое родительского каталога, можно записать: $ ls ..
Пример 11. Из /usr/include/sys произойдет переход в /usr/include, если набрать в командной строке: $ cd ..
Пример 11. Команды просмотра файлов cat и more. Общая структура команд:
$ cat <имя_файла>,
$ more <имя_файла>
Команда more используется для просмотра больших файлов, т.к. дает постраничный просмотр и имеет несколько опций для движения по файлу.
Пример 12. Команду cat можно использовать для просмотра небольших файлов следующим образом:
$ cat имя_файла
Команду cat можно использовать для создания текстовых файлов:
$ cat > имя_файла
Например: $ cat > file1. Далее ввести с клавиатуры текст файла. Набрать Ctrl ^ D одновременно. Файл создан.
Команда rm. Для удаления файлов используется команда rm:
$ rm <список_файлов>
Можно удалять один или несколько файлов, при записи разделенных пробелами. Количество имен файлов можно указать любое.
При использовании опции -i появляется сообщение о подтверждении удаления, нужно указать "да" или "нет" (обычно yes или no).
Для удаления подкаталогов используется опция -r , а чтобы стереть все файлы в текущем каталоге вместо имен файлов можно указать знак *:
$ rm *
Проверить команду Что за команда? (это календарь call).
$ whatis call
Найти подкаталог katal в указанном каталоге /home/student:
$ find /home/student type -d katal
Найти файл file1 в указанном каталоге /home/student:
$ find /home/Student type -f file1
Знак вопроса заменяет один произвольный символ, командой find ведется поиск файлов, названия которых начинаются на file, а далее следует ещё один символ названия:
$ find . -name file?
Программные каналы,
перенаправление входных и выходных потоков данных
Многие команды ОС Linux принимают данные со стандартного ввода или передают на стандартный вывод. По умолчанию в качестве устройства для стандартного ввода используется клавиатура, для стандартного вывода - терминал. Перенаправление стандартного вывода в файл или на устройство обозначается знаком "больше" (>). Стандартный ввод может быть получен не с клавиатуры, а из файла. Оператором перенаправления стандартного ввода является знак "меньше" (<).
Пример 1. Вывести на экран содержимое файла file и записать в новый файл file1 можно, используя перенаправление стандартного ввода-вывода, представляющего байтовый поток. Чтение данных из файла file и запись в fi1le1 в командной строке осуществляются следующим образом:
$ cat < file > file1
То же самое, но только с опцией -i - проверки наличия файла filef:
$ cat < file > -i file1
Поскольку файл уже создан, появится сообщение о наличии файла file1, нужно ответить n, чтобы не изменять уже существующий файл, или y, чтобы записать в него.
Если требуется добавить информацию в файл, т.е. осуществлять запись в него не с начала файла, а в конец уже имеющейся записи в файле, то используется оператор добавления. Допишем в fi1e1 информацию из файла file2:
$ cat file2 >> file1
ОС Linux поддерживает стандартный вывод сообщений об ошибках (2>), отличающийся от стандартного вывода, результат выводится в файл и в зависимости от настроек на экран.
Пример 2. Чтобы сообщения об ошибках выполнения команды cp записать в файл error, нужно выполнить команду:
$ cp fileprog /k1 2> error
Чтобы добавить сообщения об ошибках в файл error, вместо знака (>) предыдущей команды нужно использовать знак добавления (>>):
$ cat fileinfo 2>> error
Ошибка могла возникнуть, если указанные файлы не существуют.
Для передачи результат выполнения команды в другую команду используется символ вертикальной черты | - так называемый программный канал. Другими словами, он передаёт выходные данные команды на вход следующей команды.
Пример 3. Передать в файл filelist список имен файлов текущего каталога, выданный командой ls. Передача данных в данном примере осуществляется по программному каналу: $ ls | cat > filelist.
Программа-оболочка Midnight Commander
Программа Midnight Commander
является аналогом операционной оболочки Norton Commander и имеет с ней большое сходство в интерфейсе и функциях. Она выполняет команды менеджера файлов в текстовом режиме и имеет дополнительно удобные средства просмотра файлов и файловых структур и а также удобные свойства. Запуск Midnight Commander осуществляется из окна терминала:
$ mс
Текстовые редакторы
Пользователь может создавать файлы с использованием текстового редактора vi и его расширенной версии vim, а также графических редакторов gvim, gedit, gnotepad+ и других. Все они являются небольшими редакторами, некоторые из них имеют встроенные функции.
При отладке программ, работе с серверными приложениями, когда нет необходимости устанавливать графический режим, широко используются текстовый редактор vi и его расширенный вариант - текстовый редактор vim. Они являются командами и имеются в большинстве командных интерпретаторов, включая BASH. Их можно запустить из командной строки следующим образом:
$ vi и $ vim
Текстовый редактор vi дает возможность выполнить основные команды редактирования и ввода текста, vim - более мощный текстовый редактор, имеющий большое количество команд редактирования.
Эти редакторы используют в основном клавиатуру и имеют два режима работы: командный и режим ввода текста. После запуска редактора появляется рабочее окно, внизу которого находится командная строка. Набрав в ней команду i (input - ввод) или a (add - добавление), можно приступать к вводу текста. Выход из режима ввода осуществляется нажатием клавиши Esc, переход в командный режим можно осуществить, используя знак ":" . Чтобы запомнить промежуточные результаты ввода, в командном режиме необходимо использовать команду w. Выход из редактора осуществляется нажатием ZZ при нажатой клавише Shift, выход с запоминанием результатов редактирования ‑ wq. Чтобы выйти из редактора без запоминания, в случае, если не было редактирования файла перед этим, в командном режиме выполняется команда q, если выполнялось редактирование - команда q!. Возможно использование команды exit.
Продолжением разработки редактора vim является редактор gvim, он работает в графическом режиме и имеет встроенный интерфейс, как у редактора vi, но дополнен строкой с несколькими кнопками меню, расположенными вверху окна, позволяющими выбирать команды редактора с помощью мыши.
Для рабочего стола GNOME основным является графический редактор gedit, обеспечивающий полную поддержку мыши и реализующий основные функции по редактированию файлов; его функциональные возможности шире, чем у предыдущих.
Для редактирования небольших текстовых файлов и создания web-страниц предназначен графический редактор gnotepad+. Он имеет панель инструментов, дающую возможность вставлять некоторые часто используемые элементы языка HTML.
Компилятор gcc
Для отладки и выполнения программ на языке C используется компилятор gcc. Практически все дистрибутивы Linux поставляются вместе с компиляторами языка C и языка C++. На начальном этапе обучения версия компилятора не имеет значения. Если в дистрибутиве есть компилятор gcc, то обычно есть и линковщик.
Создадим отдельным текстовым файлом простейшую программу, пусть ее имя будет prog1.c (расширение писать обязательно), а исходный текст следующий:
#include
int main (void)
{
printf ("Hello World\n");
}
Чтобы откомпилировать программу, достаточно набрать в командной строке:
$ gcc -o prog1 prog1.c
$
Команда gcc, вводимая в командной строке командного интерпретатора, выполнит компиляцию, и если в программе нет синтаксических ошибок, то компилятор завершит свою работу без каких-либо сообщений и создаст исполняемый модуль prog1.exe в текущем директории: Набрав команду ls, вы обнаружите новый файл с именем prog1. Этот файл содержит исполняемый код программы. Такие файлы называют исполняемыми файлами ('executable files') или бинарниками ('binary files').
Опция -o компилятора gcc указывает на то, каким должно быть имя выходного файла. Выходным файлом может быть не только бинарник. Если не указать опцию -o, то бинарнику, в нашем случае, будет присвоено имя a.out.
Осталось только запустить полученный бинарный файл на выполнение. Для этого набираем в командной строке следующую команду:
$ ./prog1
Hello World
$
Когда мы набираем в командной строке путь к бинарнику, мы сообщаем КИ, что надо выполнить программу. КИ передает бинарник ядру операционной системы, а ядро системы особым способом отдает программу на выполнение процессору. Затем, если программа не была запущена в фоновом режиме, то КИ ждет от ядра сообщения о том, что программа выполнилась. Получив такое сообщение
, КИ выдает приглашение на ввод новой команды. Вы можете еще раз набрать ./prog1 и процедура повторится. В нашем случае программа выполняется очень быстро, и новое приглашение командной строки появляется практически сразу.
Мы рассмотрели идеальный случай, когда программа написана без синтаксических ошибок. Попробуем намеренно испортить программу таким образом, чтобы была ошибка. Для этого достаточно убрать точку с запятой в конце строки функции printf():
printf ("Hello World\n")
Теперь, если попытаться откомпилировать программу, то компилятор укажет на то, что он считает неправильным:
$ gcc -o prog1 prog1.c
hello.c: In function 'main':
hello.c:7: error: syntax error before '}' token
$
В первой строке говорится, что в файле prog1.c в теле функции main() что-то произошло. Вторая строка сообщает, что именно произошло: седьмая строка файла hello.c вызвала ошибку (error). Далее идет расшифровка: синтаксическая ошибка перед закрывающейся фигурной скобкой.
Заглянув в файл prog1.c мы обнаружим, что ошибка не в седьмой, а в шестой строке. Дело в том, что компилятор обнаружил неполадки только в седьмой строке, но написал before (до), что означает "смотри перед".
Естественно, пока мы не исправим ошибку, ни о каком бинарнике не может идти и речи. Если мы удалим старый бинарник prog1, оставшийся от прошлой компиляции, то увидим, что компиляция испорченного файла не даст никакого результата. Однако иногда компилятор может лишь "заподозрить" что-то неладное, потенциально опасное для нормального существования программы. Тогда вместо 'error' пишется 'warning' (предупреждение), и бинарник все-таки появляется на свет (если в другом месте нет явных ошибок). Не следует игнорировать предупреждения, за исключением тех случаев, когда вы на 100% знаете, что делаете.
Мультифайловое программирование
Если исходный код сколько-нибудь серьезной программы уместить в одном файле, то такой код станет просто нечитаемым. К тому же если программа компилируется достаточно долго (особенно это относится к языку C++), то после исправления одной ошибки, нужно перекомпилировать весь код.
Поэтому лучше разбросать исходный код по нескольким файлам (осмысленно, по какому-нибудь критерию), и компилировать каждый такой файл отдельно. Как вы вскоре узнаете, это очень даже просто.
Давайте сначала разберемся, как из исходного файла получается бинарник. Исходный файл не сразу превращается в бинарник. После компиляции создается объектный код. Это исполняемый код с некоторыми "вкраплениями", из-за которых объектный код еще не способен к выполнению. Сразу в голову приходит стиральная машина: вы ее только что купили и она стоит у вас дома в коробке. В таком состоянии она стирать не будет, но вы все равно рады, потому что осталось только вытащить из коробки и подключить.