Ivan Asmer hace 6 años
padre
commit
c18b4bf0b1
Se han modificado 2 ficheros con 71 adiciones y 1 borrados
  1. 1 1
      01OS.md
  2. 70 0
      02UNIXWAY.md

+ 1 - 1
01OS.md

@@ -97,7 +97,7 @@ TODO: OSI.JPG
 <table class="table table-bordered">
 <thead>
 <tr>
-<th>Дириктория</th>
+<th>Директория</th>
 <th>Описание</th>
 </tr>
 </thead>

+ 70 - 0
02UNIXWAY.md

@@ -0,0 +1,70 @@
+# UNIXWAY: Everything is a file, streams, pipes, sockets. Commandline vs GUI, automation
+
+Как было уже рассмотрено на прошлом занятии, в **UNIX**-системах большое внимание уделено гибкости файлового дерева, которое
+может включать в себя множество разных файловых систем для разных целей - как дисковых, так и виртуальных. Ко всему прочему
+CLI содержит в себе достаточно гибкий инструментарий для оперирования данными в файлах. Файлы же, в свою очередь, могут
+быть отображением *любой информации*, включая практичеки любые настройки операционной системы.
+Все это дает гибкий и мощный инструментарий для автоматизации и управления операционной системой.
+
+## Понятие потока/сокета. Применение в **POSIX**.
+
+Потоки, сокеты и пайпы (каналы) - схожие понятия, суть которых в абстракции **потока данных**. Поток предоставляет
+данные порциями для обработки, и, обычно, не позволяет доступ в случайном порядке. Потоки ввода-вывода - однонаправленные,
+сокет, обычно, состоит из двух потоков. Сокеты обычно используются для сетевых соединений.
+
+С точки зрения **POSIX** (стандарт **UNIX**-систем) все эти сущности, как в сети, так и в случае потоков ввода-вывода, работают
+схоже (или одинаково), что облегчает и унифицирует программирование потоков, и позволяет гибко перенаправлять локальные потоки
+в сеть или в любому другому получателю, который готов воспринимать потоковые данные.
+
+## Потоки ввода-вывода.
+
+У каждой программы, работающей с CLI (а это по умолчанию все в **UNIX**), есть три потока:
+- **Поток ввода**. По умолчанию связан с вводом пользователя с клавиатуры. Однако его можно *перенаправить*.
+- **Поток вывода**. То, что выводит программа на терминал. Все основные консольные команды типа `cat` и `ls` выводят полезную информацию в поток вывода.
+- **Поток ошибок**. Это, по большому счету, тоже поток вывода, который по умолчанию отправляется туда же, куда и основной поток вывода - на экран терминала. Однако ошибки могут быть *перенаправлены* *отдельно* в другом направлении, так как это отдельный полноправный поток.
+
+## Перенаправление ввода-вывода.
+
+ - `>` - перенаправление вывода программы в файл
+ - `>>` - дописывает в файл.
+ - `<` - перенаправления файла на поток ввода
+ - `|` - перенаправление потока вывода одной программы на другой.
+
+## Коды ошибок и `&&`, `||`.
+
+Ко всему прочему, каждая программа в рамках **CLI** может вести себя как **функция** - имеет код результата, который обычно передается из программы с помощью функции `exit`. Код числовой, 0 означает что все хорошо,
+иные значение - ту или иную ошибку. Это можно использовать в условиях и циклах оболочки. Значение ошибки доступно в переменной `$?` интерпретатора.
+
+### `&&` и `||`
+
+В отличие от **PHP**, во многих языках логические **И** и **ИЛИ** работают не только в логическом, но и в бытовом смысле: **И** работает до первой неудачи, **ИЛИ** работает до первой удачи.
+Под 'удачей' или 'неудачей' понимается код ошибки, возвращенный из программы:
+
+```sh
+git commit -am 'text' && git push # сделать коммит, И, если он удачный (код ошибки === 0), сделать git push
+```
+
+```sh
+reboot || shutdown -h now # перезагрузить ИЛИ выключить. Если reboot не срабатывает - запускается shutdown -h now
+```
+
+### `;`
+  
+Объединяет несколько команд в одну строку не обращая внимания на коды ошибок.
+
+
+## Фильтры (`sort`, `uniq`, `grep`, `sed`, `cut`, `wc` ...)
+
+**TODO**
+
+## Всё есть файл и что это даёт.
+
+показать всякие приколяхи `/sys` и `/proc`. Там можно найти яркость, громкость и прочие штуки.
+
+## Сокеты в файловой системе и сетевые.
+
+https://en.wikipedia.org/wiki/Unix_domain_socket
+
+## Базовый скриптинг и автоматизация. 
+
+шо-то взять и погрепать. пошукать по файлам PHP проекта и найти. и т. п.