Try  HackMD Logo HackMD

Запуск Python програм з терміналу Linux

Якщо треба вийти/відмінити/перервати

Спочатку спробуйте клавішу q або Esc

Скорочено від QUIT. Вона працює як "вихід" у багатьох програмах - в
tig, htop, less, ranger, ncdu, man,

Потім Ctrl-c

Хоч це такий же хоткей як "скопіювати", в лінукс терміналах він означає "перервати роботу".

Для Vim Esc :q!Enter

Це виходу з редактору Vim/Neovim. Якщо з першого разу не спрацювало, спробуйте ще кілька разів.
Мова вводу повинна бути англійська!

Для nano Ctrl-x

Це команда виходу з редактору nano. Може знадобитись підтвердження.

Для tmux Ctrl-b d

Це команда відключення від tmux, без переривання його роботи.

Ctrl-d

Це команда виходу з bash та ssh.

Базові програми для роботи в консолі

SSH

Підключенні до віддаленого серверу відбувається через SSH:

ssh user@server

(параметри user та server отримайте окремо).

При першому вході потрібно підтвердити ключ (набрати yes та Enter).

При старті запуститься Bash від імені вашого юзера. Якщо натиснути Ctrl-d,
то з'єднання завершиться. Можна зробити кілька підключень з кількох різних терміналів.

Для авторизації може використовуватись і пароль, але безпечніше і зручніше через асиметричний ключ.

Bash та coreutils

Bash та coreutils складаються з кількох сотень команд та конструкцій. Сумарно вони стають повноцінною
мовою програмування. Основний типом даних який використовується в Баш, є рядок і список рядків.

Хоткеї

  • клавіші вверх/вниз - рухатись по історії команд, щоб не перенабирати команди які вже були набрані
  • TabTab - автодоповнення. НАЙПОПУЛЯРНІШИЙ хоткей, працює дуже часто
    і спрощує набір команд і назв файлів
  • Ctrl-r - шукати по історії. Можна ввести шматок команди і Баш пошукає найсхожішу команду
  • Ctrl-c - перервати команду або процес
  • Home / End - перейти в початок або кінець рядка
  • Ctrl-d - вийти з башу

Файли і папки (files and directories)

  • pwd - показати поточну папку
  • ls, ls -la - показати файли і папки в поточній папці
  • cd .. - перейти в папку вище
  • cd dirname - перейти в дочірню папку dirname
  • cd /bla/blo/ble - перейти в конкретну папку в системі
  • cat filename - вивести на екран вміст файлу. Розширення у файлу може не бути.
    Великі і маленькі букви потрібно писати відповідно, не можна змішувати!
  • echo "Test test test" > filename - записати фразу в файл filename. Ця конструкція
    називається "перенаправлення виводу", тобто, текст буде виводитись не на екран, а в файл
  • mkdir dirname - зробити папку dirname

Змінні (env vars)

  • export BLABLA=testtest - зробити змінну BLABLA і записати в неї testtest.
    Навколо = не повинно бути пробілів! Це мегаважливо!
  • echo $BLABLA - вивести змінну на екран
  • env - вивести всі наявні змінні на екран
    • змінна PS1 відповідає за відображення промпту в Баш, і її можна змінити
    • змінна PATH відповідає за те, де знаходяться програми для швидкого запуску, і її можна міняти
    • змінну EDITOR відповідає за те, який редактор є дефолтним, і її можна змінити
  • echo "This is some $BLABLA text" - використання змінної всередині рядка зробить
    заміну. Це називається інтерполяція змінної, або підстановка змінної
  • echo "my current user is ${USER}" - так також можна робити інтерполяцію змінної.
  • echo "my current dir is $(pwd)" - в круглих дужках відбудеться інтерполяція
    команди
    . Тобто, в даному випадку команда pwd буде запущена, і її вивід підставиться
    в рядок. В Пайтоні це називається "виклик функції".

Запуск

  • cowsay "Hello my friend" - запустити команду cowsay з параметром
  • fortune | cowsay - запустити команду fortune, і передати її вивід на вхід до cowsay.
    Конструкція називається пайп (pipe), бо текст від одної команди йде до іншої якби по трубі.
  • fortune | figlet | lolcat - те саме, але тепер тут три команди передають одна до
    одної тексти.
  • python some_file.py - запустити пайтон скрипт
  • ./some_file.py - якщо файл налаштовано як "запускаємий", то файл буде запущено
  • cat some_file.py | less - вивести файл у пейджер less

Пайпи універсальні. Практично будь-яку команду можна передати у пайп, і багато команд вміють читати
з пайпу.

less (пейджер)

Якщо зробити less some_file.py або cat some_file.py | less, то файл можна переглядати у режимі
пейджера. Хоткеї:

  • q - вийти
  • Up/Down - рухатись по файлу
  • PgUp/PgDown - рухатись по файлу швидше
  • / - шукати в файлу. Пишіть текст, тисніть Enter і якщо такий текст є
    то less туди перейде. Натисність /Enter щоб шукати далі
  • ? - шукати в файлі назад. Аналогічно попередній команді
  • -SEnter - не переводити рядки на нові якщо вони дуже довгі.
    Працює як перемикач для всього файлу

man (мануал)

Показує документацію (мануал) по команді. Якщо забули які у команди параметри, можна підглянути в
man:

  • man cowsay
  • man lolcat
  • man tmux
  • man man

tmux (мультиплексер терміналів)

Дозволяє кілька крутих штук:

  • tmux сесія не закривається якщо зупиняється SSH або закривається термінал. Вона буде висіти
    доки сервер не перезагрузиться або явно не закриють сесію.
  • можна робити вкладки в терміналі (переключатись між кількома Bash-ами)
  • можна робити розбиття екрану вертикально або горизонтально (наприклад, зверху редактор, а знизу
    запуск коду)

Як запускати:

  • tmux a - підключитись до першої ліпшої сесії, якщо вона вже є
  • tmux new -s myname - створити нову сесію з іменем myname. Зручно, якщо не хочете заважати
    колегам по терміналу
  • tmux a -t myname - підключитись до сесії по імені
  • \tmux - запустити індивідуальну сесію, до якої тільки у вас є доступ

Хоткеї, коли вже запущено:

  • Ctrl-b - так званий префікс (prefix-key). Всі хоткеї по роботі з tmux
    повинні починатись з цього хоткею. Тому практично всі хоткеї подвійні.
  • Ctrl-bd - відключитись і не закривати tmux
  • Ctrl-bs - подивитись які є інші сесії
  • Ctrl-bс - запустити нову вкладку
  • Ctrl-bxy - закрити вкладку
  • Ctrl-b2 - переключитись на вкладку з номером 2. Номер означає на яку вкладку переключитись
  • Ctrl-bw - подивитись які є вкладки
  • Ctrl-b" - розбити вкладку горизонтально (h split). Щоб закрити її просто вийдіть з Башу через Ctrl-d
  • Ctrl-b% - розбити вкладку вертикально (v split)
  • Ctrl-bLeft/Right/Up/Down - переміщатись між вкладками
  • Ctrl-bz - зробити вкладку на весь екран. Якщо натисну ще раз, то вернеться назад

Neovim (nvim)

Це консольний редактор файлів. Його фішка в тому, що він запускається у "нормальному" режимі спочатку.
В цьому режимі НЕ можна вставляти символи і текст. Всього є кілька режимів (modes):

  • нормальний (normal), в цей режим можна вертатись клавішої Esc
  • вставка (insert), доступний по клавіші i, тут можна писати букви
  • виділення (visual), клавіша v, дозволяє виділяти текст
  • команди (command), клавіша :, дозволяє писати складні команди
  • термінал (terminal), запускається по :termEnter, виходити по Ctrl-\ Ctrl-n

:::warn
Всі великі букви треба набирати як великі букви!
:::

Команд і хоткеїв мільйон, але найкорисніші (всі запускати тільки з номального режиму):

  • :wEnter зберегти файл

  • :qEnter вийти

  • :wqEnter зберегти і вийти

  • :q!Enter вийти і не зберігати

  • V(далі клавіші вниз-вверх) зробити виділення

    • y скопіювати виділення
    • d вирізати виділення
    • > посунути текст в сторону
    • . повторити попередню команду
  • P вставити

  • u відміна дії (undo)

  • Ctrl-r відміна відміни (redo)

  • / шукати в файлі (як у less)

  • :!... запустити баш команду. Наприклад:

    • :!hexdump -C %Enter отримати HEX-вигляд поточного файлу
    • :!python %Enter запустити програму у пайтоні (тільки якщо неінтерактивна)
  • :vs|:term python %Enter запустити програму у пайтоні інтерактивно

  • останню команду трохи напряжно набирати, але Vim/Nvim дозволяють робити хоткеї.
    Наприклад, якщо написати

    :nnoremap <F3> :w<cr>:vs<bar>:term python %<cr>Enter,

    то це додасть новий хоткей F3, який буде зберігати файл і запускати
    пайтон код поруч, інтерактивно.

ranger

ranger - переглядач папок і файлів. Після запуску можна клавішами вверх вниз рухатись
по файлам в поточній папці, а клавішами вліво/вправо рухатись між батьківськими і дочірніми
папками.

Хоткеї:

  • q - вийти
  • ?k - подивитись всі доступні хоткеї
  • '!command` - запустити команду в Баш

Веселощі в терміналі

Окрім чорного екрану, в терміналі можна робити всяку веселу фігню.

telnet, curl, asciinema

Протоколи Telnet та HTTP можна експлуатувати

  • curl parrot.live - мем з папугою
  • telnet mapscii.me - карта в терміналі. Рухатися стрілочками,
    маштабуватися a/z, перемикати режим c, вийти q
  • asciinema play https://asciinema.org/a/234965 - запустити скрінкаст

asciinema дозволяє не тільки грати файли з інтернету, а й записувати свої сскрінкасти. asciinema -h для допомоги

просто весело

  • lolcat - розмальовує все що на вході у кольори веселки. Наприклад, tree / | lolcat
  • cowsay, cowthink - заставити корову говорити
  • figlet - перетворити текст у ASCII-арт
  • cmatrix - заставка з Матриці
  • pipes.sh - просто труби
  • pastel random - просто кольори

Корисно

  • htop - інформація про запущені процеси і зайняті ресурси (монітор процесів)
  • ncdu / - інформація по розмірам файлів в системі
  • hexdump -C ... - вивести файл у хакерському вигляді
  • tree /home - показати файли і папки у вигляді ієрархії
  • tig - заміна git
  • curl 'https://google.com' - скачати сторінку з інтернету
    • curl 'https://google.com' > google_page - скачати сторінку з інтернету і зберегти у файл
  • pkill -f telnet - вбити всі запущені telnet програми.

Можна робити комбінації через пайпи, наприклад, curl 'https://google.com' | hexdump -C | lolcat