Skip to content

Commit

Permalink
исправления от adpadalko
Browse files Browse the repository at this point in the history
  • Loading branch information
true-grue committed Dec 3, 2021
1 parent b6438c9 commit 4409914
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 21 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@
* [TMentosT](https://github.com/TMentosT) за демонстрацию работы с шаблонным docx-файлом.
* [HaidesAidoseus](https://github.com/HaidesAidoseus) за рисунки.
* [maxim760](https://github.com/maxim760) за исправление опечаток.
* [adpadalko](https://github.com/adpadalko) за исправления и расшифровку некоторых названий.
2 changes: 1 addition & 1 deletion filters/upper.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
local text = require('text')

function Header(el)
if el.level == 1 then
if el.level == 1 and FORMAT == 'docx' then
return pandoc.walk_block(el, {
Str = function(el)
return pandoc.Str(text.upper(el.text))
Expand Down
38 changes: 19 additions & 19 deletions md/command_line.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ Taken.

Основная суть решений, принятых при использовании командной строки, сводится к положениям «философии UNIX» (Дуг Макилрой), которые можно выразить следующими пунктами:

* Пусть каждая программа решает хорошо одну задачу. Для новых задач создавайте новые программы, а не усложняйте старые новыми «возможностями».
* Предполагайте, что вывод каждой программы может стать входом другой, еще неизвестной программы. Не загромождайте вывод посторонней информацией. Избегайте строго выравненных столбчатых форматов и двоичных входных форматов. Не настаивайте на интерактивном вводе.
* Пусть каждая программа решает одну задачу и решает ее хорошо. Для новых задач создавайте новые программы, а не усложняйте старые новыми «возможностями».
* Предполагайте, что вывод каждой программы может стать входом другой, еще неизвестной программы. Не загромождайте вывод посторонней информацией. Избегайте строго выравненных столбчатых и двоичных входных форматов. Не настаивайте на интерактивном вводе.
* Проектируйте и разрабатывайте ПО, даже операционные системы, таким образом, чтобы его можно было опробовать уже на ранних этапах, в идеале в течение недель. Не бойтесь выбрасывать неудачно реализованные части и пересоздавать их.
* Вместо ручного труда используйте инструменты для облегчения задач разработки, даже если придется отвлечься на создание этих инструментов, а сами инструменты могут впоследствии больше не понадобиться.

Expand Down Expand Up @@ -115,13 +115,13 @@ total 4

Обратите внимание на использование в приведенном сеансе команд, упрощенное описание которых дано ниже:

* `pwd`. Вывести имя текущего каталога.
* `ls`. Вывести содержимое каталога.
* `pwd` (print working directory). Вывести имя текущего каталога.
* `ls` (list). Вывести содержимое каталога.
* `echo`. Вывести свой аргумент.
* `cat`. Вывести содержимое файла.
* `mkdir`. Создать каталог.
* `cp`. Скопировать файл.
* `rm`. Удалить файл.
* `cat` (concatenate). Вывести содержимое файла.
* `mkdir` (make directory). Создать каталог.
* `cp` (copy). Скопировать файл.
* `rm` (remove). Удалить файл.

Многие команды имеют ряд аргументов, это, в частности, касается `ls`, которая выше была вызвана с аргументом `-l`. Аргументы разделяются пробелами и имеют префикс `-`.

Expand Down Expand Up @@ -314,9 +314,9 @@ drwxr-xr-x 2 root root 37 Nov 4 18:01 foo
Первый столбец определяет права доступа и информацию о файле (`-`) или каталоге (`d`, как в случае с foo), закодированную в первом символе. Флаги доступа бывают следующих основных видов:

* `-`. Доступ запрещен.
* `r`. Имеется доступ на чтение.
* `w`. Имеется доступ на запись.
* `x`. Имеется доступ на исполнение (на вход в случае каталога).
* `r` (read). Имеется доступ на чтение.
* `w` (write). Имеется доступ на запись.
* `x` (execute). Имеется доступ на исполнение (на вход в случае каталога).

Рассмотрим детали на примере с файлом bench.py, который имеет следующие права доступа:

Expand Down Expand Up @@ -394,7 +394,7 @@ seq "$1" | xargs echo | tr " " "*" | bc

В первой строке указан интерпретатор, который будет использоваться для исполнения программы. По соглашению, такую строку необходимо всегда указывать первой в пользовательских скриптах. Далее используется ряд новых команд.

Команда `seq` генерирует последовательность чисел:
Команда `seq` (sequence) генерирует последовательность чисел:

```default
localhost:~# seq 5
Expand All @@ -405,21 +405,21 @@ localhost:~# seq 5
5
```

Команда `xargs` форматирует список из стандартного ввода:
Команда `xargs` (extended arguments) форматирует список из стандартного ввода:

```default
localhost:~# seq 5 | xargs
1 2 3 4 5
```

Команда `tr` осуществляет замену текстовых фрагментов:
Команда `tr`(translate) осуществляет замену текстовых фрагментов:

```default
localhost:~# seq 5 | xargs | tr " " "*"
1*2*3*4*5
```

Команда bc представляет собой калькулятор:
Команда `bc` (basic calculator) представляет собой калькулятор:

```default
localhost:~# echo "2+2" | bc
Expand Down Expand Up @@ -464,7 +464,7 @@ echo $res

## Инструменты командной строки

Команда grep осуществляет поиск по образцу, определяемому регулярным выражением. Команда sed является строчным редактором, но главное ее использование состоит в замене по шаблону, как и в случае grep, заданному регулярным выражением.
Команда `grep` (globally search for a regular expression and print matching lines) осуществляет поиск по образцу, определяемому регулярным выражением. Команда `sed` (stream editor) является строчным редактором, но главное ее использование состоит в замене по шаблону, как и в случае grep, заданному регулярным выражением.

В @tbl:cli1 показаны примеры некоторых базовых элементов регулярного выражения.

Expand All @@ -484,13 +484,13 @@ echo $res

Веб-инструмент regex101 @regex101 может помочь в поэлементном разборе сложных регулярных выражений.

С использованием grep и sed можно создать достаточно сложные схемы обработки данных. В частности, следующий код осуществляет проверку правописания для файла README.md на основе словаря из файла unix-words:
С использованием `grep` и `sed` можно создать достаточно сложные схемы обработки данных. В частности, следующий код осуществляет проверку правописания для файла README.md на основе словаря из файла unix-words:

```default
cat README.md | tr A-Z a-z | tr -cs A-Za-z '\n' | sort | uniq | grep -vx -f unix-words >out ; cat out | wc -l | sed 's/$/ mispelled words!/'
```

Еще более изощренным, чем grep и sed, является инструмент awk. Awk (по именам авторов – Aho, Weinberger, Kernighan) представляет собой язык программирования для обработки текстовых данных.
Еще более изощренной, чем `grep` и `sed`, является команда `awk`. AWK (по именам авторов – Aho, Weinberger, Kernighan) представляет собой язык программирования для обработки текстовых данных.

Ниже показан пример вывода колонки №5 из данных, предоставленных вызовом `ls -l`:

Expand Down Expand Up @@ -519,7 +519,7 @@ localhost:~# ls -l | awk '{ print $5 }'
36
```

Средствами awk легко подсчитать общий размер файлов:
Средствами `awk` легко подсчитать общий размер файлов:

```default
localhost:~# ls -l | awk '{ s += $5 } END { print s }'
Expand Down
2 changes: 1 addition & 1 deletion md/virtual_machines.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ t4 = t1 - t3

При использовании виртуальной машины с отличающейся от хост-машины процессорной архитектурой необходима **эмуляция**, которая может быть реализована в виде интерпретатора машинного кода, а также на основе статического (AOT) или динамического (JIT) двоичного транслятора.

Одной из популярных программ для задач виртуализации вычислительных систем является QEMU. В этой программе реализована эмуляция ряда компьютеров различных архитектур с набором периферийных устройств. В QEMU поддерживается аппаратная виртуализация с использованием сторонних гипервизоров, в числе которых KVM и HAXM.
Одной из популярных программ для задач виртуализации вычислительных систем является QEMU. В этой программе реализована эмуляция ряда компьютеров различных архитектур с набором периферийных устройств. В QEMU поддерживается аппаратная виртуализация с использованием сторонних гипервизоров, в числе которых KVM (Kernel-based Virtual Machine) и HAXM (Hardware Accelerated Execution Manager).

Рассмотрим пример использования QEMU. Предположим, мы хотим использовать дистрибутив Linux Alpine на виртуальной машине с архитектурой x86-64. В первую очередь создадим виртуальный жесткий диск размером 1 Гбайт, на который будет установлен дистрибутив Linux:

Expand Down

0 comments on commit 4409914

Please sign in to comment.