Skip to content

Commit

Permalink
Add about toolchain
Browse files Browse the repository at this point in the history
  • Loading branch information
Mikhail Zelenyi committed Jul 8, 2024
1 parent ccc52a5 commit a213010
Show file tree
Hide file tree
Showing 10 changed files with 418 additions and 3 deletions.
110 changes: 110 additions & 0 deletions source/cards/toolchain/bash_environment
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
Окружение командной строки — это интерфейс и набор параметров, с которыми пользователь или программа взаимодействует при работе в командной строке операционной системы. Оно включает в себя переменные окружения, пути к исполняемым файлам, текущий рабочий каталог и другие настройки, которые влияют на поведение командной оболочки и выполняемых команд.

### Основные элементы окружения командной строки

1. **Командная оболочка (Shell)**:
- Программа, которая интерпретирует и выполняет команды, введенные пользователем.
- Примеры: Bash, Zsh, Fish в Unix-подобных системах; Command Prompt (cmd.exe) и PowerShell в Windows.

2. **Переменные окружения**:
- Параметры, которые влияют на работу командной оболочки и запущенных программ.
- Примеры переменных: `PATH`, `HOME`, `USER`, `SHELL`.

```sh
# Пример установки переменной окружения
export MY_VAR="some_value"
```

3. **PATH**:
- Переменная окружения, содержащая список директорий, в которых командная оболочка ищет исполняемые файлы.
- Разделяется двоеточиями (:) в Unix-подобных системах и точкой с запятой (;) в Windows.

```sh
# Пример добавления директории в PATH в Unix-подобной системе
export PATH=$PATH:/usr/local/my_custom_bin
```

4. **Текущий рабочий каталог**:
- Каталог, в котором выполняются команды.
- Команда `pwd` показывает текущий рабочий каталог, а `cd` изменяет его.

```sh
# Показать текущий рабочий каталог
pwd
# Перейти в другой каталог
cd /path/to/directory
```

5. **Алиасы (Aliases)**:
- Короткие имена или псевдонимы для длинных команд или командных последовательностей.

```sh
# Создание алиаса
alias ll="ls -la"
```

6. **Конфигурационные файлы**:
- Файлы, в которых хранятся настройки оболочки и переменные окружения.
- Примеры: `~/.bashrc`, `~/.bash_profile`, `~/.zshrc` для Unix-подобных систем; `profile.ps1` для PowerShell.

```sh
# Пример добавления переменной окружения в .bashrc
echo 'export MY_VAR="some_value"' >> ~/.bashrc
```

### Примеры переменных окружения

- **`PATH`**: Указывает директории, в которых система ищет исполняемые файлы.
- **`HOME`**: Домашний каталог текущего пользователя.
- **`USER`**: Имя текущего пользователя.
- **`SHELL`**: Путь к исполняемому файлу текущей командной оболочки.
- **`PWD`**: Текущий рабочий каталог.

### Управление переменными окружения

- **Просмотр текущих переменных окружения**:
```sh
printenv
# Или
env
```

- **Просмотр значения конкретной переменной**:
```sh
echo $HOME
```

- **Установка переменной окружения**:
```sh
export MY_VAR="some_value"
```

- **Удаление переменной окружения**:
```sh
unset MY_VAR
```

### Конфигурационные файлы

Конфигурационные файлы командной оболочки содержат команды и настройки, которые выполняются при запуске оболочки.

- **`.bashrc`**: Выполняется при запуске интерактивной не-логин оболочки Bash.
- **`.bash_profile`**: Выполняется при запуске логин оболочки Bash.
- **`.zshrc`**: Выполняется при запуске интерактивной оболочки Zsh.

### Пример конфигурационного файла `.bashrc`

```sh
# Добавление директории в PATH
export PATH=$PATH:/usr/local/my_custom_bin

# Установка алиаса
alias ll="ls -la"

# Установка переменной окружения
export MY_VAR="some_value"
```

### Заключение

Окружение командной строки — это мощный инструмент для управления и автоматизации работы в операционной системе. Оно позволяет настраивать работу оболочки и запущенных программ, обеспечивая гибкость и эффективность в выполнении команд и скриптов.
132 changes: 132 additions & 0 deletions source/cards/toolchain/console.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Консоли, терминалы и комндные оболочки


Консоль в операционной системе — это интерфейс, который позволяет пользователю взаимодействовать с операционной системой посредством ввода команд в текстовом режиме. Консоли часто используются для выполнения задач, требующих административного доступа, работы с файлами и директориями, запуска программ, а также для выполнения скриптов и автоматизации процессов.

Основные аспекты консоли включают:

1. **Командная строка**: Основной элемент консоли, где пользователь вводит команды. Командная строка обычно представляет собой строку текста с индикатором готовности (например, `$` в Unix-подобных системах или `C:\>` в Windows), после которого пользователь может вводить команды.

2. **Оболочка (shell)**: Программа, которая обрабатывает команды, введенные пользователем. В Unix-подобных системах популярны оболочки Bash, Zsh, и Fish. В Windows используется Command Prompt (cmd.exe) и PowerShell.

3. **Команды**: Текстовые инструкции, которые пользователь вводит в консоли для выполнения определенных действий. Например, в Unix-подобных системах команда `ls` отображает список файлов и директорий в текущей директории, а в Windows команда `dir` выполняет аналогичную функцию.

4. **Скрипты**: Наборы команд, записанные в файл, которые могут выполняться как единое целое. Это позволяет автоматизировать выполнение часто повторяющихся задач.

5. **Перенаправление ввода/вывода**: Возможность перенаправления ввода и вывода команд в файлы или другие команды. Например, `ls > file_list.txt` сохранит вывод команды `ls` в файл `file_list.txt`.

Консольные интерфейсы часто используются в администрировании систем, программировании, и решении различных технических задач, так как они позволяют более гибко и точно управлять операционной системой по сравнению с графическими интерфейсами.

## Отличие консоли от терминала
Консоль и терминал — это два связанных, но разных понятия в контексте операционных систем и пользовательских интерфейсов.

### Консоль

1. **Консоль** - это общее понятие, которое обозначает интерфейс для взаимодействия с операционной системой через текстовые команды.
2. **Физическая консоль**: В историческом контексте консоль — это физическое устройство, состоящее из монитора и клавиатуры, подключенное напрямую к компьютеру или серверу.
3. **Виртуальная консоль**: В современных операционных системах это может быть текстовый режим на мониторе, к которому можно переключиться с графического интерфейса. Например, в Linux можно переключаться между виртуальными консолями с помощью клавиш `Ctrl + Alt + F1` до `Ctrl + Alt + F6`.

### Терминал

1. **Терминал** - это устройство или программа, которая предоставляет интерфейс для ввода и вывода данных, взаимодействующих с системой или удаленным компьютером.
2. **Физический терминал**: В прошлом терминалы были отдельными устройствами (например, телетайпы, видео-дисплейные терминалы), которые подключались к основному компьютеру или мейнфрейму.
3. **Эмулятор терминала**: В современных системах терминалы обычно представляют собой программы, которые эмулируют поведение старых физических терминалов. Примеры включают GNOME Terminal, Konsole, Windows Terminal, и т.д.

### Основные различия

1. **Консоль как физическое устройство**:
- Включает монитор и клавиатуру, подключенные напрямую к компьютеру.
- Управление осуществляется непосредственно на этом устройстве.

2. **Терминал как программное обеспечение**:
- Эмулирует поведение физических терминалов.
- Используется для доступа к командной оболочке (shell).
- Могут подключаться к удаленным системам по протоколам вроде SSH.

### Взаимосвязь

- **Терминал и командная оболочка**: Терминал запускает оболочку (например, Bash, Zsh в Unix-подобных системах или PowerShell в Windows), через которую пользователь вводит команды. Оболочка интерпретирует команды и взаимодействует с операционной системой.
- **Виртуальные консоли и терминалы**: В Unix-подобных системах виртуальные консоли могут быть доступны через комбинации клавиш и предоставлять текстовый интерфейс, подобный терминалу, но обычно с более низким уровнем функциональности и без возможности работы в графическом режиме.

### Пример

- **Консоль**: Включение и работа на сервере через текстовый интерфейс, который отображается непосредственно на экране сервера.
- **Терминал**: Открытие программы GNOME Terminal на рабочем столе Linux, чтобы взаимодействовать с системой или подключаться к удаленному серверу через SSH.

Таким образом, консоль более общее понятие, включающее физические и виртуальные интерфейсы для текстового взаимодействия, тогда как терминал чаще относится к программам, которые предоставляют такой интерфейс.


## Командные оболочки

Командные оболочки (shell) — это программы, которые предоставляют текстовый интерфейс для взаимодействия с операционной системой. Существуют различные оболочки, каждая из которых имеет свои особенности, синтаксис и возможности. Вот некоторые из наиболее распространенных командных оболочек:

### Unix-подобные системы

1. **Bash (Bourne Again Shell)**:
- Наиболее распространенная оболочка в Linux.
- Совместима с Bourne Shell (sh), но обладает дополнительными функциями и улучшениями.
- Поддерживает скрипты и автоматизацию задач.
- Используется по умолчанию в большинстве дистрибутивов Linux.

2. **Zsh (Z Shell)**:
- Расширяет возможности Bash, предлагая больше настроек и функций.
- Поддерживает автодополнение команд и аргументов.
- Включает мощные функции для работы с командной историей и плагинами (например, Oh My Zsh).

3. **Fish (Friendly Interactive Shell)**:
- Ориентирована на удобство использования.
- Поддерживает синтаксическую подсветку и автодополнение.
- Не полностью совместима с POSIX, что может ограничить выполнение некоторых скриптов.

4. **Tcsh (Tenex C Shell)**:
- Улучшенная версия C Shell (csh).
- Поддерживает командную историю и автодополнение.
- Использует синтаксис, похожий на язык программирования C.

5. **Ksh (Korn Shell)**:
- Совместима с Bourne Shell (sh) и обладает дополнительными возможностями.
- Часто используется в коммерческих Unix-системах.
- Поддерживает скрипты и автоматизацию задач.

### Windows

1. **Command Prompt (cmd.exe)**:
- Стандартная оболочка для Windows.
- Поддерживает базовые команды и пакетные файлы (.bat).
- Ограничена по сравнению с современными оболочками.

2. **PowerShell**:
- Мощная оболочка и скриптовый язык, разработанный Microsoft.
- Интегрируется с .NET Framework и поддерживает сложные сценарии автоматизации.
- Обладает более мощными возможностями по сравнению с cmd.exe.

### Другие

1. **Dash (Debian Almquist Shell)**:
- Легковесная и быстрая оболочка, совместимая с POSIX.
- Часто используется в Debian и Ubuntu для выполнения скриптов в init-скриптах.

2. **Csh (C Shell)**:
- Одна из ранних оболочек Unix.
- Имеет синтаксис, похожий на язык программирования C.
- Меньше используется сегодня по сравнению с более современными оболочками.

### Пример использования

- **Bash**:
```sh
#!/bin/bash
echo "Hello, World!"
```

- **PowerShell**:
```powershell
Write-Output "Hello, World!"
```

- **Fish**:
```fish
echo "Hello, World!"
```

Каждая оболочка имеет свои особенности и преимущества, и выбор оболочки часто зависит от предпочтений пользователя и конкретных задач.
3 changes: 3 additions & 0 deletions source/cards/toolchain/debuger.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## Debuger

* [PyDev](https://www.pydev.org/)
11 changes: 10 additions & 1 deletion source/cards/toolchain/docs.md
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
# Документирование программного кода
# Документирование программного кода


## Генерация документации

* [Sphinx](https://www.sphinx-doc.org/en/master/index.html#)
* `pip install sphinx`
* `sphinx-quickstart`
* Плагины, включая `autodoc` --- автоматическая генерация документация по docstrings
* Интеграция с setuptools
25 changes: 25 additions & 0 deletions source/cards/toolchain/example_linter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import string


shift = 3
choice = input("would you like to encode or decode?")
word = (input("Please enter text"))

letters = string.ascii_letters + string.punctuation + string.digits
encoded = ''
if choice == "encode":
for letter in word:
if letter == ' ':
encoded = encoded + ' '
else:
x = letters.index(letter) + shift
encoded=encoded + letters[x]
if choice == "decode":
for letter in word:
if letter == ' ':
encoded = encoded + ' '
else:
x = letters.index(letter) - shift
encoded = encoded + letters[x]

print(encoded)
8 changes: 8 additions & 0 deletions source/cards/toolchain/linter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Linter

[//]: # (Пример в файле example_linter.py)

* **Lint** or **Linter** - инструмент для статического анализа кода:
* Соответствие кода Codestyle
* Выявление подозрительного кода
* Помощь в рефакторинге
Binary file added source/cards/toolchain/linux_terminal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions source/cards/toolchain/pep.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# PEP: Python Enhancement Proposals

* [PEP 0](https://www.python.org/dev/peps/) - Index of Python Enhancement Proposals
* [PEP 8](https://www.python.org/dev/peps/pep-0008/) - Style Guide for Python Code
Loading

0 comments on commit a213010

Please sign in to comment.