Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Улучшаем себе DX при помощи консольных инструментов

Улучшаем себе DX при помощи консольных инструментов

Федор Борщёв (Школа Сильных Программистов, руководитель). Улучшаем себе DX при помощи консольных инструментов

Многие программисты до сих пор считают, что терминал — это инструмент бородатых админов из 80-х годов. На самом деле это не так — каждый год в сообществе появляются новые консольные инструменты, которые улучшают ежедневную рутину программиста: упрощают работу с гитхабом, поиск файлов, переход между проектами. Есть инструменты с говорящими названиями, к примеру tldr ускоряет чтение документации, а fuck — исправляет ошибку в последней введённой команде.

На докладе я сделаю краткий обзор современных консольных инструментов, и расскажу о том, что ещё можно делать в терминале — к примеру редактировать текст быстрее, чем в GUI.

Выступление: https://moscowpython.ru/meetup/79/dx-with-console/

MoscowPython: http://moscowpython.ru
Курсы Learn Python: http://learn.python.ru
Moscow Python Podcast: http://podcast.python.ru

Moscow Python Meetup

February 04, 2023
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. case `cat animal.txt` in kitten) echo meow! ;; doge) echo

    bark! ;; *) echo Кря. ;; esac BASH
  2. case `cat animal.txt` in kitten) echo meow! ;; doge) echo

    bark! ;; *) echo Кря. ;; esac switch (cat animal.txt) case kitten echo meow! case doge echo bark! case '*' echo Кря. end FISH BASH
  3. FISH Ctrl-R (reverse-i-search)`pg': pg_restore --host localhost -U postgres -d postgres

    pg_restore --host localhost -U postgres -d postgres app-postgres_productio… BASH
  4. $ ls- lah<enter> bash: ls-: command not found BASH Как

    понять, что команда не сработает FISH
  5. $ ls- lah<enter> bash: ls-: command not found $ fuck

    BASH Как понять, что команда не сработает FISH
  6. $ ls- lah<enter> bash: ls-: command not found $ ls-

    lah Как понять, что команда не сработает BASH FISH
  7. $ ls- lah<enter> bash: ls-: command not found $ ls

    -lah Как понять, что команда не сработает BASH FISH
  8. Пользовательский сценарий ls в Mac $ ls --help ls: unrecognized

    option `--help' usage: ls [-@ABCFGHILOPRSTUWabcdefghi klmnopqrstuvwxy1%,] [--color=when] [-D format] [file ...]
  9. Permissions Size User Date Modified Name drwx------ - f213 21

    Apr 21:50 .ansible drwx------ - f213 5 Jun 16:52 .cache .rw-r--r-- 0 f213 23 May 2020 .cloud-locale.skip drwx------ - f213 26 Jun 13:17 .config lrwxrwxrwx 35 f213 17 Apr 11:03 .cookiecutterrc -> /home/f213/.dotfiles/cookiecutterrc Пользовательский сценарий exa
  10. drwxrwxr-x - f213 17 Apr 11:03 . drwxrwxr-x - f213

    17 Apr 11:03 ├── after drwxrwxr-x - f213 17 Apr 11:03 │ └── ftplugin .rw-rw-r-- 72 f213 17 Apr 11:03 │ ├── javascript.vim .rw-rw-r-- 35 f213 17 Apr 11:03 │ ├── make.vim .rw-rw-r-- 411 f213 17 Apr 11:03 │ ├── python.vim .rw-rw-r-- 71 f213 17 Apr 11:03 │ ├── vue.vim .rw-rw-r-- 55 f213 17 Apr 11:03 │ └── yaml.vim .rw-rw-r-- 838 f213 17 Apr 11:03 └── init.vim Пользовательский сценарий exa -T
  11. $ alias ls=exa Пользовательский сценарий exa -T drwxrwxr-x - f213

    17 Apr 11:03 . drwxrwxr-x - f213 17 Apr 11:03 ├── after drwxrwxr-x - f213 17 Apr 11:03 │ └── ftplugin .rw-rw-r-- 72 f213 17 Apr 11:03 │ ├── javascript.vim .rw-rw-r-- 35 f213 17 Apr 11:03 │ ├── make.vim .rw-rw-r-- 411 f213 17 Apr 11:03 │ ├── python.vim .rw-rw-r-- 71 f213 17 Apr 11:03 │ ├── vue.vim .rw-rw-r-- 55 f213 17 Apr 11:03 │ └── yaml.vim .rw-rw-r-- 838 f213 17 Apr 11:03 └── init.vim
  12. Даже самые базовые сценарии болеют $ grep -r animal ./

    ./1.first_file:1:switch read animal.txt ./1.second_file:1:let animal=`cat animal.txt` ./1.second_file:3:echo ${animal} ./1.second_file:4:case `cat animal.txt` in
  13. Даже самые базовые сценарии болеют $ rg animal 1.bash_file 1:let

    animal=`cat animal.txt` 3:echo ${animal} 4:case `cat animal.txt` in 1.fish_file 1:switch read animal.txt
  14. Даже самые базовые сценарии болеют $ alias grep=rg 1.bash_file 1:let

    animal=`cat animal.txt` 3:echo ${animal} 4:case `cat animal.txt` in 1.fish_file 1:switch read animal.txt
  15. Взять ПР, чтобы поправить опечатки $ git checkout feature/invoice error:

    pathspec 'feature/invoice' did not match any file(s) known to git
  16. Взять ПР, чтобы поправить опечатки $ git fetch; git checkout

    feature/invoice Switched to branch ‘feature/ivocing’ Your branch is up to date with 'origin/feature/invoicing'.
  17. Взять ПР, чтобы поправить опечатки $ git fetch fetch checkout

    $ git checkout feature/invoice Switched to branch ‘feature/ivocing’ Your branch is up to date with 'origin/feature/invoicing'. открыть github скопировать название веточки 4 действия
  18. Взять ПР, чтобы поправить опечатки 1 действие $ gh pr

    checkout 3 Switched to branch ‘feature/invoicing’ Your branch is up to date with 'origin/feature/invoicing'. Already up to date.
  19. Почти для любого сценария есть удобный инструмент sd вместо sed

    Посмотреть файл: Найти: Массовая замена: bat вместо cat fd вместо find
  20. Vim скорость интерфейс fun! Edit_ft_conf(name) " we may not do

    this with a loaded file, since this won't trigger the " configuration file loading as desired. " try calling with 'call Edit_ft_conf("nonexistingfile.<EXT>")' if this " gives you troubles if bufexists(a:name) && bufloaded(a:name) echo "!Attention: buffer for " . a:name . " is loaded, unload first." return endif let safereg = @u redir @u " redirect command output to register @u exec "silent 2verbose split " . a:name redir END let pos = 0 let regexp = 'sourcing "[^"]\+"' while match(@u,regexp,pos) >= 0 let file = matchstr(@u,regexp,pos) let pos = matchend (@u,regexp,pos) let file = strpart(file,10,strlen(file)-11) exec "silent below split " . file endwhile let @u = safereg endfun язык из 70-х
  21. Vim скорость интерфейс порог вхождения язык из 70-х IDE интеграция

    с языком интерфейс скорость vscode интерфейс скорость интеграция с языком
  22. vscode ? интерфейс скорость интеграция с языком Vim ? скорость

    интерфейс порог вхождения язык из 70-х
  23. vscode ? интерфейс скорость интеграция с языком Vim ? скорость

    интерфейс порог вхождения язык из 70-х Neovim скорость интерфейс интеграция с языком
  24. Vim скорость интерфейс порог вхождения язык из 70-х IDE интеграция

    с языком интерфейс скорость Neovim скорость интерфейс интеграция с языком порог вхождения