Skip to content

командная строка для экономиста

License

Notifications You must be signed in to change notification settings

IzyGolstein/unlearn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unlearn

Важнейшие навыки для экономиста, который намерен кодить по-настоящему

1. Командная строка

Многие из нас - заложники больших, красивых графических программ (Excel, PyCharm), а работа с командной строкой кажется чем-то вроде наказания. Но именно в командной строке происходит все самое интересное в программировании. Чем раньше вы освоите командную строку (а заодно и linux) - тем больше вы программист (и дороже стоите на рынке труда).

Еще аргументы за изучение командной строки:

  • pip install pandas - это уже командная строка
  • больше никаких "нажми такое-то меню, потом выбери, потом кликни..."
  • с помощью питоновских пакетов click, rich, textual появляется больше программ с текстовым интерфейсом
  • думаем об облаках: управление удаленной машиной или сервером - это всегда командная строка

Что обязательно надо уметь

  1. Общие представления
  • считаем командную строку не злом, а благом
  • понимаем, что команды для винды или для линукса будут отличаться
  1. Начать работу:
  • найти и открыть консоль (терминал) на своем компьютере
  • запустить python.exe и выйти из него (для этого он должен быть установлен)
  • аргументы команд, короткие () и длинные флаги (--verbose)
  • получить справку по команде или утилите через man <команда>
  1. Директории (каталоги):
  • знать типовую структуру каталогов в линуксе и на винде
  • ориентироваться в структуре директорий (каталогов): где я сейчас нахожусь, как перейти на уровень выше, есть ли подкаталоги
  • уметь передвигаться (cd) по каталогам
  • знать, что означают ., .., / в путях каталогов
  • знать и использовать команды:
    • pwd, ls, cd (навигация по каталогам)
    • mkdir, rmdir (создать и удалить каталог)
  1. Работа с файлами:

Общие представления:

  • отличать текстовые и бинарные файлы
  • название файла, расширение, что обычно значат расширения

Базовые навыки:

  • echo, cat (печатать в консоль)
  • cp, mv, rm (копирование, перемещение и удаление файлов и каталогов)
  • touch (создать пустой файл)

Чуть более продвинутые навыки:

  • find, grep, diff (поиск по файлам и их сравнение)
  • head, tail (начальные и конечные строки текстового файла)
  • wc (посчитать количество слов или строк в файле)
  1. Запросы в Интернет:
  • wget, curl
  1. Далее проникнуться, что такое:
  • переменная PATH и зачем она нужна (скучно, но рано или поздно вы с ней столкнетесь)
  • потоки stdin / stdout / stderr (полезная абстракция)
  • пайп | и перенаправление >, >> (очень полезно)
  • скрипты bash на линукс (пример)
  • скрипты batch на винде

Чему еще можно научиться

Устанавливать новые программы через менеджеры пакетов:

  • sudo apt-get на линуксе (Ubuntu)
  • chocolatley или scoop на винде (не очень часто используется)

Крайне полезные навыки:

  • just (выполнять повторяющиеся команды или блоки команд, аналог make)
  • npm (устанавливать и запускать много полезных пакетов на JavaScript)

Скучные, но нужные время от времени вещи:

  • sudo и пользователи
  • типы файлов, права доступа, chmod
  • доступ к удаленной машине через ssh
  • использовать git в командной строке
  • редактор типа nano или vi
  • xargs
  • powershell (на винде)

Как улучшить себе жизнь на винде?

  • установить красивую консоль, такую как cmder
  • установить WSL, чтобы получить доступ к линуксу
  • получить доступ к бесплатной удаленной машине под линуксом (Github Codespaces, repl.it, Google Colab, gitpod и т.д.)

Еще идеи для обучения:

  • установить клон линуксовых команд для винды (это нестандартный, обходной путь, но еще один способ выучить команды), смотрим в сторону GoW и аналогов
  • установить эмулятор консоли Termux на телефон Андроид, чтобы потренировать команды
  • почитать про философию утилит Unix и современные альтернативы классическим утилитам (https://github.com/ibraheemdev/modern-unix)

Идеи проектов:

  • любая простая программа на питоне с интерфейсом командной строки с помощью sys.argv, docopt или click
  • использовать программу в составе пайпа с линуксовой утилитой
  • написать свой вариант утилиты ls, cat или любой другой
  • разобрать примеры пакетов или программ, где придуман хороший командный интерфейс, а где ужасный

Темная сторона вопроса (сделайте PR, если знаете):

  • какие команды линукс являются встроенными, а какие - отдельными программами
  • как некоторые пакеты питона устанавливает свои исполняемые скрипты, что для этого нужно

Тихо молчим о:

  • портах, сети
  • разных сборках линукса
  • работе с датой и временем

Литература

Основная:

  • The Art of Command Line - книжка большая и ценный справочник, но и есть много лишнего, информации не для новичков.

Дополнительная:

Термины

Вопросы, комментарии, "все пропало, ничего не понимаю" - пишите в ишью

2. Контроль версий (git)

Просто выучите git. В git'е вам надо знать:

  • clone, pull, commit, push
  • .gitignore
  • ветки
  • pull request на Github
  • далее все остальное.

В повседневной работе вам нужно уметь:

  • склонировать репо (или git pull чтобы получить новые изменения с сервера)
  • выбрать нужную ветку
  • разбить свою работу на небольшие логические части
  • сделать коммит(ы) с хорошим названием, что сделали
  • git push

Личное мнение - упираться делать все это в командной строке - трата времени, можно без ущерба воспользоваться графически интерфейсом - Github Desktop, встроенные средства VS Code, а командную строку приберечь для сложных случаев.

При довольно красивой логике программы (диффы изменений), git - это довольно запутанная система. Будьте готовы к тому, что иногда вам захочется проект удалить или перезагрузить всю папку, а не морочиться с контролем версий, это все проходили.

3. Легкая разметка (markdown)

Какой еще маркдаун? Если надо - пишу код, остальное в Ворде или Google Docs.

About

командная строка для экономиста

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages