Наш ассоциированный член www.Bikinika.com.ua

Швидкість Linux на Windows 10 - Микола Громов

  1. Вступ
  2. спойлер
  3. Згадувані в статті файли
  4. Основи використання терміналу Ubuntu в Windows 10
  5. Як запускати Sublime Text з консолі Ubuntu
  6. Налаштування консолі Ubuntu
  7. Перехід до потрібної директорії при старті
  8. аліаси
  9. Дивна проблема з аліасами
  10. Показ git-гілки в командному рядку
  11. дрібні поліпшення
  12. помічені баги
  13. Як заходити на сервер, запущений в WSL, зі сторонніх пристроїв в одній локальній мережі
  14. Комфортне використання з Cmder
  15. замість висновку

Стаття про налаштування функціональності і зовнішнього вигляду bash-терміналу Windows Subsystem for Linux (WSL) в Windows 10.

Вступ

Я постійно використовую термінал для роботи з git і автоматизації збирання проектів (верстка / фронтенд: компіляція pug і scss, обробка зображень, транспіляція js ...). На моєму робочому комп'ютері стоїть Windows 10, а на ноутбуці - OSX і мені хочеться використовувати одні і ті ж консольні команди на обох системах, тому я використав GitBash (термінал, який встановлюється разом з Git) всередині емулятора (Cmder) . Така зв'язка працювала помітно повільніше терміналу на OSX, тому я був натхнений новиною «У Windows 10 вбудували підсистему Linux» (Березень 2016 г.), але тоді, в 2016 році, її використання розчарувало: не можна було запускати з bash-терміналу програми Windows, підсистема не визначає зміна файлу, якщо зміна була зроблена з Windows. Зараз ці проблеми вирішені.

спойлер

Головний виграш для мене - швидкість. У моєму стартовому репозиторії є трудомістке завдання повного складання проекту (компіляція, транспіляція, спрайт, шрифти, картинки ...), з Gitbash вона займає 17 секунд, з bash-терміналом WSL - 10 секунд.

Згадувані в статті файли

Установка Windows Subsystem for Linux (WSL)

У мережі повно статей з інструкціями (здебільшого, застарілих). користуйтеся офіційною інструкцією з docs.microsoft.com і все вийде. Я встановив Ubuntu, тому що маю невеликий досвід її використання.

Після успішної установки можна запустити термінал підсистеми Linux командою bash в cmd.exe (або PowerShell) або кліком по іконці в меню «Пуск».

exe (або PowerShell) або кліком по іконці в меню «Пуск»

Основи використання терміналу Ubuntu в Windows 10

Це підсистема всередині Windows, щоб використовувати nodeJS і git, потрібно поставити їх у підсистему (навіть якщо вони вже встановлені в Windows). Я вибрав варіант з Ubuntu, тому при установці nodejs користувався цією інструкцією , А git встановив командою sudo apt-get install git (не забудьте вказати git-у своє ім'я користувача та email).

Можна запускати додатки Windows. Спробуйте notepad.exe - запуститься Windows-блокнот.

Диски Windows розташовані в / mnt /. Спробуйте cd / mnt / c / && ls для переходу до диску С: / і виведення його кореневих директорій (за замовчуванням висновок виглядає сумно, але це налаштовується).

Директорія користувача розташована в ~ (cd ~ для переходячи в неї). Просто нагадую.

В Linux-системах великі і малі символи - різні символи. При використанні автодоповнення (Tab) важливо вводити символи в правильному регістрі.

Директорія користувача підсистеми Linux фізично у мене розташувалася по досить довгому шляху (див. Нижче). Сегмент nicothin - ім'я користувача системи (як на початку шляху (Windows), так і в кінці (Ubuntu)).

c: \ Users \ nicothin \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home \ nicothin \

Якщо редагувати файли Linux-підсистеми з Windows, то Linux в деяких випадках не зможе отримати до них доступ (не вистачить прав). Після такого редагування потрібно в bash-терміналі підсистеми виконати щось на зразок chmod 777 ~ / .bashrc (де ~ / .bashrc - редагований з Windows файл) і перезапустити термінал. Або можна використовувати команду source ~ / .bashrc (вкажіть редагований файл) для застосування внесених змін.

Як запускати Sublime Text з консолі Ubuntu

Якщо використовуєте Sublime Text, додайте шлях до subl.exe в PATH в Windows, щоб по команді в терміналі subl.exe запускався Sublime Text:

  1. У провіднику зробіть правий клік на Цей комп'ютер, виберіть Властивості, потім Додаткові параметри системи.
  2. На вкладці Додатково натисніть кнопку Змінні середовища.
  3. Зробіть подвійний клік по Path для переходу до її редагування.
  4. Натисніть кнопку Створити і додайте шлях до subl.exe.
    У моєму випадку це c: \ Program Files \ Sublime Text 3 \.
  5. Перезапустіть термінал.

Вконтакте ВКонтакте вконтакте Вконтакте

Налаштування консолі Ubuntu

кольори

На жаль, відразу після установки консоль (особливо висновок команди ls) виглядає «бородато» і «носить светр».

Можна додати файл з настройками колірного оформлення (touch ~ / .dircolors для створення файлу) з цим вмістом .

Вміст зручно додавати з Windows, але тоді після збереження файлу в bash-терміналі виконайте chmod 777 ~ / .dircolors і перезапустіть термінал.

dircolors і перезапустіть термінал

Перехід до потрібної директорії при старті

Якщо при запуску терміналу хочеться потрапляти в директорію проектів, можна вписати в самому верху ~ / .bashrc команду cd / mnt / d / projects / (вкажіть шлях до потрібної директорії).

аліаси

Додамо файл (touch ~ / .bash_aliases) c цим вмістом і перезапустити bash-термінал.

Тепер по команді subl. відкриється Sublime Text (поточна папка буде показана як проект), а по команді на кшталт subl filename.txt можна швидко відкривати файли.

Дивна проблема з аліасами

Я налаштовував bash-термінал на двох домашніх комп'ютерах з Windows 10 і на одному з них після додавання файлу термінал при рестарт виводив 4 повідомлення: command not found. Через що - я так і не зрозумів (права доступу були і власник файлу - я), але знайшов рядки в ~ / .bashrc, які до цього призводили. Це було підключення файлу з аліасами:

if \ [-f ~ / .bash_aliases \]; then. ~ / .Bash_aliases fi

Вирішив проблему, закоментувавши ці рядки і вписавши аліаси прямо в ~ / .bashrc (в самому низу).

Показ git-гілки в командному рядку

Крок 1: додамо на початку ~ / .bashrc функцію для показу гілки:

git_branch () {git branch 2> / dev / null | sed -e '/ ^ [^ *] / d' -e 's / * \ (. * \) / (\ 1) /'}

Крок 2: визначимо змінну, що відповідає за запрошення командного рядка, додамо в неї показ результату роботи цієї функції (див. .bashrc ). Вийде щось на зразок:

if [ "$ color_prompt" = yes]; then PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ e [32m $ (git_branch) \ e [0m \ $ 'else PS1 =' $ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $ 'fi

дрібні поліпшення

Є досить багато дій в bash-терміналі, на які Windows 10 відреагує звуковим сигналом (натискання Backspace, коли вже нічого прати, наприклад). Щоб це відключити, створіть ~ / .inputrc з рядком set bell-style none.

Vim за замовчуванням показує досить темний текст, що на темному тлі виглядає погано. Можна створити ~ / .vimrc з рядком set background = dark, щоб текст став більш читабельним.

помічені баги

Працювати з буфером обміну за замовчуванням не комфортно (Ctrl + V, Shift + Insert не працюють, доводиться кликати (!!!) ПКМ по заголовку вікна і вибирати ЗмінитиВставити). Вирішується використанням терміналу не самостійно, а всередині Cmder.

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

На одному з домашніх комп'ютерів працює збереження історії команд між сеансами, на іншому не працює (хоча права доступу і власник файлу ~ / .bash_history - активний користувач і збереження історії включено). Не критично.

Не працюють інструменти копіювання в буфер. Наприклад, при налаштуванні SSH для github.com, є інструкція для Linux:

sudo apt-get install xclip # Downloads and installs xclip. If you do not have `apt-get`, you might need to use another installer (like` yum`) xclip -sel clip <~ / .ssh / id_rsa.pub # Copies the contents of the id_rsa.pub file to your clipboard

Але її неможливо виконати, тому що xclip працювати не буде. Вирішується використанням віндовскій утиліти: clip.exe <~ / .ssh / id_rsa.pub

Після завантаження Windows іноді (було всього двічі) відмовляється працювати. Допомагає перезавантаження (це ж Windows).

Брандмауер Windows за замовчуванням не дає зайти на запущений всередині WSL сервер при запиті з іншого пристрою (запускаємо сервер розробки на робочому компі, відкриваємо його сторінки з телефону, що знаходиться в тій же локальній мережі). Як це лікувати - не розібрався, доводиться тимчасово відключати брандмауер.

Як це лікувати - не розібрався, доводиться тимчасово відключати брандмауер

Як заходити на сервер, запущений в WSL, зі сторонніх пристроїв в одній локальній мережі

Я пишу багато html-сторінок. У процесі роботи у мене запущений локальний сервер, який збирає розмітку, стилі, javascript, спрайт і т.п. Буває зручно запустити на основному комп'ютері сервер і зайти на нього за допомогою ноутбука, телефону, планшета (сервер доступний за IP, на зразок http://192.168.1.207:8080). Однак, вбудований в Windows 10 фаєрвол за замовчуванням блокує такі сполуки.

Щоб потрапити на такий сервер, потрібно додати правило для брандмауера:

Щоб потрапити на такий сервер, потрібно додати правило для брандмауера:

  1. Знайти за допомогою пошуку «Брандмауер захисника Windows», відкрити, натиснути зліва «Додаткові параметри».
  2. У вікні Монітора брандмауера вибрати (зліва) «Правила для вхідних ...», натиснути «Створити правило» (праворуч).
  3. Вибрати «Для порту», ​​натиснути «Далі».
  4. Вибрати «Певні локальні порти», ввести номер порту (мій локальний сервер працює на порту 8080, його я і ввів), натиснути «Далі».
  5. Вибрати «Дозволити підключення», натиснути «Далі», вибрати профілі (я вибрав все), «Далі».
  6. Ввести якесь ім'я, натиснути «Готово».

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

Комфортне використання з Cmder

Для більш тонкої настройки зовнішнього вигляду і комфортної роботи з буфером обміну (звичне поєднання Ctrl + V для вставки) зручно використовувати bash-термінал підсистеми Linux всередині cmder (Емулятор терміналу, всередині якого можна запустити один з встановлених в Windows терміналів). Для цього потрібно додати можливість старту WSL-консолі в налаштуваннях Cmder:

  1. Правий клік по іконці бургера в нижньому правому куті для переходу до налаштувань.
  2. У розділі Startup вибрати радіокнопку Auto save / restore opened tabs, щоб при рестарт не створювати вкладки заново.
  3. У розділі Startup, підрозділі Tasks перевірити наявність завдання WSL :: bash. Якщо її немає, натиснути кнопку Add / refresh default tasks ... і погодитися на додавання завдань.
  4. У списку завдань з'явиться пункт WSL :: bash, при створенні нової вкладки терміналу потрібно вибрати його.

У списку завдань з'явиться пункт WSL :: bash, при створенні нової вкладки терміналу потрібно вибрати його

Якщо в списку завдань є пункт WSL :: bash, але WSL не запускається під час його виборі (в момент створення нової вкладки Cmder), то в налаштуваннях можна спробувати натиснути Add / refresh default tasks ... і погодитися на оновлення списку завдань (див. П. 3). Якщо і після цього не виходить запустити термінал підсистеми (Cmder повідомляє про проблему і пише, що після натискання Enter закриє вкладку), то можна додати свою власну задачу, яка буде запускати cmd.exe і відразу викликати в ній команду bash. Команда запуску терміналу буде виглядати так:

* Cmd / k ""% ConEmuDir% .. init.bat "" && bash

замість висновку

Я скачав і встановив в систему шрифт Ubuntu Mono для більшої автентичності зовнішнього вигляду терміналу.

Новости