Найкорисніший урок інформатики, який ви, мабуть, ніколи не відвідували
OЩо я постійно спостерігав протягом своєї кар’єри, так це те, що найпродуктивніші науковці та інженери даних зазвичай мають одну спільну рису: вони майстри командного рядка. Вони можуть переміщатися у файловій системі свого комп’ютера, шукати шаблони в файлах журналу та керувати завданнями, вихідним кодом і контролем версій – все це з командного рядка, не покладаючись на повільну навігацію за допомогою миші та графічного інтерфейсу користувача.
Тим не менш, це «чарівництво» командного рядка, як це може здатися комусь, хто не знайомий з інструментами оболонки, зазвичай не є частиною стандартних навчальних програм інформатики. Ан курс MIT навколо освоєння вашого командного рядка влучно названо "Відсутній семестр вашої CS освіти".
Ця публікація — мій особистий курс із 10 уроків «Майстерства командного рядка 101», призначений для читачів, які хочуть більше працювати з командним рядком, а менше — з графічним інтерфейсом користувача. Ми розглянемо основи оболонки та змінної шляху, псевдоніми, дозволи на файли, потокову передачу та конвеєр, ефективне керування завданнями, tmux, ssh, git і vim.
Давайте розпочнемо. Ласкаво просимо до CLW 101.
1. Оболонка
Коли ви відкриваєте свій термінал, ви дивитесь на a оболонка, наприклад bash (перетворена оболонка) або ZSH (z-оболонка). Оболонка насправді є повною мовою програмування з доступом до певних стандартних програм, які дозволяють навігацію файловою системою та маніпуляції даними. Ви можете дізнатися, яку оболонку ви використовуєте, ввівши:
echo $ SHELL
У bash кожного разу, коли ви запускаєте нову оболонку, оболонка завантажує послідовність команд, які вказані всередині .bashrc
файл, який зазвичай знаходиться у вашому домашньому каталозі (якщо ви користуєтеся Mac, там зазвичай є .bash_profile
натомість файл). У цьому файлі ви можете вказати такі корисні речі, як змінна шляху або псевдоніми (докладніше про це нижче).
2. Змінна шляху
Коли ви вводите назву певних програм у свою оболонку, наприклад python
, cat
або ls
, як оболонка знає, звідки взяти цю програму? Це мета змінна шляху. Ця змінна зберігає список усіх шляхів, у яких оболонка шукає програми, розділених двокрапками. Ви можете перевірити свою змінну шляху, ввівши:
echo $PATH
І ви можете додати додаткові каталоги до вашої змінної шляху за допомогою цієї команди:
експорт PATH="my_new_path:$PATH"
Найкраще додати цю команду до вашого файлу bashrc, щоб ваш додатковий каталог завжди був на вашому шляху, коли ви запускаєте нову оболонку.
3. Псевдоніми
псевдонімами це спеціальні команди, які ви можете визначити, щоб уникнути повторного введення довгих команд, наприклад:
псевдонім ll="ls -lah"
псевдонім gs="git status"
псевдонім gp="git push origin master"
Псевдоніми також можна використовувати для створення гарантій для робочого процесу розробки. Наприклад, визначивши
псевдонім mv="mv -i"
ваш термінал попередить вас, якщо файл, який ви збираєтеся перемістити, уже існує в новому каталозі, щоб ви випадково не перезаписали файли, які ви не збиралися перезаписувати.
Щойно ви додасте ці псевдоніми у свій файл bashrc, вони завжди будуть доступні під час запуску нової оболонки.
4. Права доступу до файлів і sudo
Якщо машиною користуються кілька користувачів, важливо налаштувати дозволи на файл які визначають, який користувач може виконувати які операції з якими даними. Коли ви друкуєте ls -l
, ви побачите файли у вашому поточному каталозі разом із їхніми дозволами в такій формі:
-rwxrwxrwx
Тут,
rwx
означають права читання, запису та виконання відповідно- 3
rwx
блоки призначені для (1) користувача, (2) групи користувачів і (3) усіх інших. У наведеному прикладі всі 3 ці сутності мають дозволи на читання, запис і виконання. - тире означає, що це файл. Замість тире також можна побачити a
d
для каталогу абоl
для символічного посилання.
Ви можете редагувати дозволи на файл за допомогою chmod
. Наприклад, якщо ви хочете створити виконуваний файл для себе, ви повинні ввести
chmod u+x my_program.py
👉 Якщо файл є виконуваним, як оболонка знає, як його виконати? Це вказується за допомогою "хешба" в першому рядку файлу, наприклад
#!/bin/bash
для сценарію bash або#!/bin/python
для сценарію python.
Нарешті, є спеціальний «суперкористувач», який має всі дозволи для всіх файлів. Ви можете запустити будь-яку команду під час написання суперкористувача sudo
перед цією командою. Ви також можете запустити окрему оболонку sudo, виконавши команду
Sudo су
⚠️ Обережно використовуйте sudo. За допомогою sudo ви можете вносити зміни в код, який керує апаратним забезпеченням вашого комп’ютера, і помилка може зробити вашу машину непридатною для використання. Пам’ятайте, що з великою силою приходить велика відповідальність.
5. Потік і трубопроводи
Команда потоковий оператор >
перенаправляє вихід із програми у файл. >>
робить те саме, але додає до існуючого файлу, а не перезаписує його, якщо він уже існує. Це корисно для реєстрації ваших власних програм, як це:
python my_program.py > файл журналу
Ще одна корисна концепція трубопроводи: x | y
виконує програму x, і спрямовує вихідні дані від x до програми y. Наприклад:
cat log.txt | tail -n5
: друкує останні 5 рядків з log.txtcat log.txt | head -n5
: друкує перші 5 рядків із log.txtcat -b log.txt | grep error
: показує всі рядки в log.txt, які містять рядок «помилка», а також номер рядка (-b)
6. Управління робочими місцями
Якщо ви запускаєте програму з командного рядка (наприклад, python run.py
), програма за умовчанням запускатиметься в foregroundі заборонити вам робити будь-що, доки програма не буде виконана. Коли програма працює на передньому плані, ви можете:
- введіть control+C, який надішле програмі сигнал SIGINT (переривання сигналу), який наказує машині негайно перервати програму (якщо програма не має способу внутрішньої обробки цих сигналів).
- введіть control+Z, що призупинить програму. Після паузи програму можна продовжити, вивівши її на передній план (
fg
), або відправивши його у фоновий режим (bg
).
Щоб негайно запустити свою команду у фоновому режимі, ви використовуєте &
оператор:
python run.py &
👉 Як дізнатися, які програми зараз працюють у фоновому режимі? Використовуйте команду
jobs
. Це відобразить назви запущених завдань, а також їхні ідентифікатори процесів (PID).
Нарешті,kill
це програма для надсилання сигналів програмам, що працюють у фоновому режимі. Наприклад,
kill -STOP %1
надсилає сигнал STOP, призупиняючи програму 1.kill -KILL %1
надсилає сигнал KILL, завершуючи програму 1 остаточно.
7. tmux
tmux
(«мультиплексор терміналів») дозволяє легко створювати нові термінали та переходити між ними. Це може бути надзвичайно корисним, наприклад, ви можете використовувати один термінал для навігації по файловій системі, а інший – для виконання завдань. За допомогою tmux ви навіть можете мати обидва з них пліч-о-пліч.
👉 Ще одна причина вивчити tmux — віддалена розробка: коли ви виходите з віддаленої машини (навмисно чи випадково), усі програми, які активно працювали у вашій оболонці, автоматично припиняються. З іншого боку, якщо ви запускаєте свої програми всередині оболонки tmux, ви можете просто від’єднати вікно tmux, вийти з системи, закрити комп’ютер і повернутися до цієї оболонки пізніше, ніби ви ніколи не виходили з системи.
Ось кілька основних команд, які допоможуть вам почати роботу з tmux:
tmux new -s run
створює новий сеанс терміналу з назвою «виконати»- control-BD: від’єднати це вікно
tmux a
: приєднати до останнього вікнаtmux a -t run
: приєднати до вікна під назвою «виконати»- control-B“ : додайте іншу панель терміналів нижче
- control-B% : додайте іншу панель терміналу праворуч
- control-B➡️ : перейти до панелі терміналу праворуч (подібно до ліворуч, вгору, вниз)
8. SSH і пари ключів
ssh
це програма для входу на віддалені машини. Щоб увійти на віддалені комп’ютери, вам потрібно буде вказати ім’я користувача та пароль або використати пару ключів, що складається з відкритого ключа (до якого мають доступ обидві машини) та закритого ключа (який доступний лише вашій машині). має доступ).
ssh-keygen
це програма для генерації такої пари ключів. Якщо ви біжите ssh-keygen
, він за замовчуванням створить відкритий ключ під назвою id_rsa.pub
і закритий ключ під назвою id_rsa
і помістіть обидва у свій ~/.ssh
каталог. Вам потрібно буде додати відкритий ключ до віддаленої машини, що, як ви вже знаєте, ви можете зробити, об’єднавши канали cat
, ssh
, а також потоковий оператор:
cat .ssh/id_rsa.pub | ssh user@remote 'cat >> ~/.ssh/authorized_keys'
Тепер ви зможете використовувати ssh у віддаленому режимі, просто надавши свій закритий ключ:
віддалений ssh -i ~/.ssh/id_rsa
Ще кращою практикою є створення файлу ~/.ssh/config
який містить усі ваші налаштування автентифікації ssh. Наприклад, якщо ваш config
файл виглядає наступним чином:
Хост розробник
HostName віддалений
IdentityFile ~/.ssh/id_rsa
Потім ви можете увійти в систему дистанційно, просто ввівши ssh dev
.
9. git
git
це система контролю версій, яка дозволяє вам ефективно переміщатися в історії версій вашого коду та гілках з командного рядка.
👉 Зверніть увагу
git
не те саме, що GitHub:git
це окрема програма, яка може керувати версіями вашого коду на локальному ноутбуці, тоді як GitHub є місцем для віддаленого розміщення вашого коду.
Ось кілька основних команд git:
git add
: визначає, які файли ви бажаєте включити до наступного комітуgit commit -m 'my commit message'
: фіксує зміну кодуgit checkout -b dev
: створює нову гілку під назвою «dev» і перевіряє цю гілкуgit merge dev
: об’єднує dev у поточну гілку. Якщо це створює конфлікти злиття, вам потрібно буде виправити ці конфлікти вручну, а потім запуститиgit add file_that_changed; git merge --continue
git stash
: скасовує всі зміни таgit stash pop
повертає їх назад. Це корисно, якщо ви внесли зміни до головної гілки, а потім вирішили, що насправді хочете, щоб ці зміни були окремою гілкою.git reset --hard
: остаточно скасовує всі зміни
А ось кілька основних команд git для роботи з віддаленим хостом (наприклад, GitHub):
git clone
: клонує копію сховища коду на вашу локальну машинуgit push origin master
: надсилає зміни на віддалений хост (наприклад, GitHub)git pull
: отримує останню версію з дистанційного керування. (Це те саме, що бігgit fetch; git merge;
).
👉 Перш ніж мати можливість запустити таку команду, як
git push origin master
, вам потрібно буде пройти автентифікацію за допомогою пари ключів ssh (див. Урок 8). Якщо ви використовуєте GitHub, ви можете просто вставити відкритий ключ у налаштування свого профілю.
10. вим
Vim — потужний текстовий редактор на основі командного рядка. Було б гарною ідеєю вивчити принаймні найпростіші команди в vim:
- час від часу вам, можливо, доведеться входити на віддалену машину та змінювати код там. vim є стандартною програмою, тому зазвичай доступна на будь-якій машині, на якій ви працюєте.
- при бігу
git commit
, за замовчуванням git відкриває vim для написання повідомлення коміту. Тож ви принаймні захочете знати, як записати, зберегти та закрити файл.
Найважливіше, що потрібно знати про vim, це те, що існують різні режими роботи. Після запуску vim ви всередині режим навігації, який ви використовуєте для навігації файлом. Тип i
, Щоб почати режим редагування, в якому можна вносити зміни до файлу. Введіть Esc
щоб вийти з режиму редагування та повернутися до режиму навігації.
Корисність режиму навігації полягає в тому, що ви можете швидко переміщатися та маніпулювати файлом за допомогою клавіатури, наприклад:
x
видаляє символdd
видаляє весь рядокb
(назад) перехід до попереднього слова,n
(далі) переходить до наступного слова:wq
збереже ваші зміни та закриє файл:q!
ігнорує ваші зміни та закриває файл
Перегляньте більше (набагато більше!) комбінацій клавіш vim цю шпаргалку vim.
Заключні думки
Вітаємо, ви пройшли «майстер командного рядка 101». Однак ми лише подряпали поверхню. Для натхнення розгляньте таку проблему:
«Дано текстовий файл і ціле число
k
, роздрукуватиk
найпоширеніші слова у файлі (і кількість їх входжень) зі зменшенням частоти».
Як дослідник даних, моїм першим поштовхом може бути запуск блокнота Jupyter, завантаження даних, можливо, у pandas, а потім використання такої функції, як pandas agg
. Однак для досвідченого майстра командного рядка це одностроковий текст:
tr -cs A-Za-z '' | tr A-Z a-z | сортувати | uniq -c | sort -rn | sed ${1}q
Це не дуже відрізняється від уяви Stable Diffusion, показаної на початку цієї статті. Чарівництво, справді.
Як стати майстром командного рядка Опубліковано з джерела https://towardsdatascience.com/how-to-become-a-command-line-wizard-5d78d75fbf0c?source=rss—-7f60cf5620c9—4 через https://towardsdatascience. com/feed
<!–
->
- Біткойн
- bizbuildermike
- blockchain
- відповідність блокчейну
- блокчейн-конференція
- Консультанти з блокчейнів
- coinbase
- coingenius
- Консенсус
- криптоконференція
- криптографічне видобування
- криптовалюта
- Децентралізований
- Defi
- Цифрові активи
- Ефіріума
- навчання за допомогою машини
- не замінний маркер
- plato
- платон ai
- Інформація про дані Платона
- Платоблокчейн
- PlatoData
- platogaming
- Багатокутник
- доказ ставки
- W3
- зефірнет