نقل تطوير JavaScript الخاص بك إلى Bash على Windows

نشرت: 2022-03-10
ملخص سريع ↬ هل تعجبك محطة Bash الخاصة بك ولكنك تحب الكمبيوتر أيضًا؟ ربما تكون قد علقت بعضًا من أجهزة Surface الجديدة هذه ، ولكن لا يمكنك التبديل بدون الجهاز الطرفي. الآن يمكنك الحصول على Windows و Bash. في هذه المقالة ، سنلقي نظرة متعمقة على كيفية إعداد مربع تطوير Windows / Linux لتطوير JavaScript.

أنا واحد من هؤلاء الأشخاص الذين لا يستطيعون العيش بدون محطة Bash الخاصة بهم. هذه الحقيقة الوحيدة جعلت من الصعب عليّ القيام بعمل الواجهة الأمامية على Windows. أنا أعمل في Microsoft وأنا على جهاز Mac. لم يكن الأمر كذلك حتى ظهر خط أجهزة Surface الجديد قبل بضع سنوات حتى أدركت: يجب أن يكون لدي واحد من هؤلاء .

لذلك حصلت على واحدة. جهاز Surface Book 2 يعمل بنظام التشغيل Windows 10 على وجه الدقة. أنا أقوم بصياغة هذه المقالة عليها الآن. وماذا عن موجهتي اللطيفة والرائعة من باش؟ حسنًا ، لقد أحضرتها معي بالطبع.

في هذه المقالة ، سألقي نظرة متعمقة على كيف تمكّنك التكنولوجيا الجديدة في Windows 10 من تشغيل محطة Linux كاملة على Windows. سأوضح لك أيضًا إعداد الجهاز الطرفي المذهل (والذي أطلق عليه "أنا" "الأفضل على الإطلاق") وكيف يمكنك أيضًا إعداد جهاز تطوير Windows / Linux الخاص بك.

إذا كنت تشتهي بعضًا من أجهزة Surface ولكن لا يمكنك العيش بدون محطة Linux ، فقد وصلت إلى المكان الصحيح.

ملاحظة : في وقت كتابة هذا التقرير ، سيتطلب منك الكثير من العناصر الواردة في هذه المقالة استخدام أو التبديل إلى إصدارات "المعاينة" أو "المطلعين" لعناصر مختلفة ، بما في ذلك Windows. ستكون معظم هذه الأشياء في بناء Windows الرئيسي في وقت ما في المستقبل.

المزيد بعد القفز! أكمل القراءة أدناه ↓

نظام Windows الفرعي لنظام Linux (WSL)

نظام Windows الفرعي لنظام Linux ، أو "WSL" هو ما يمكّنك من تشغيل Linux على Windows. لكن ما هو بالضبط هذا العلم المجنون؟

WSL ، في تجسدها الحالي ، هي طبقة ترجمة تقوم بتحويل مكالمات نظام Linux إلى استدعاءات نظام Windows. يعمل Linux على قمة WSL. هذا يعني أنه من أجل الحصول على Linux على Windows ، عليك القيام بثلاثة أشياء:

  1. تمكين WSL ،
  2. تثبيت لينكس ،
  3. قم دائمًا بتضمين ثلاثة عناصر في القائمة.

كما اتضح ، فإن طبقة الترجمة هذه عبارة عن صبي صغير على الجانب البطيء - نوعًا ما أحاول أن أتذكر ما إذا كنت بحاجة إلى splice أو slice . هذا صحيح بشكل خاص عندما تقوم WSL بالقراءة والكتابة إلى نظام الملفات. يعد هذا نوعًا من المشكلات الكبيرة لمطوري الويب نظرًا لأن أي npm install آلاف الملفات إلى جهازك. أعني ، أنا لا أعرف عنك ، لكنني لن أترك الوسادة اليسرى من خيوطي.

الإصدار 2 من WSL قصة مختلفة. إنه أسرع بكثير من الإصدار الحالي لأنه يستفيد من نواة افتراضية في Windows بدلاً من استخدام طبقة الترجمة. عندما أقول أنها "أسرع بكثير" ، أعني أسرع بكثير. مثل البحث عن "لصق مقابل شريحة" في Googling.

لهذا السبب ، سأوضح كيفية تثبيت WSL 2. في وقت كتابة هذا التقرير ، سيتطلب ذلك منك أن تكون على إصدار "Insider" من Windows.

أول الأشياء أولاً: اتبع هذا الدليل المختصر لتمكين WSL على Windows 10 وتحقق من رقم إصدار Windows الخاص بك.

بمجرد تثبيته ، اضغط على مفتاح Windows واكتب "windows insider". ثم اختر "إعدادات برنامج Windows Insider".

خيار قائمة إعدادات برنامج Windows Insider
(معاينة كبيرة)

سيكون لديك خياران مختلفان بشأن "الحلقة" التي تريد أن تكون عليها. يوجد الكثير من الأشخاص الذين أعرفهم على الحلبة السريعة. أنا رجل حذر ، رغم ذلك. عندما كنت طفلاً ، كنت أنزل على المنزلق في الملعب على بطني ممسكًا بالجوانب. ولهذا السبب أبقى على الحلقة البطيئة. لقد كنت أستخدمه منذ عدة أشهر ، وأجده ليس أكثر اضطرابًا أو غير مستقر من Windows العادي.

إنه خيار جيد إذا كنت تريد WSL 2 ، لكنك لا تريد أن تموت على الشريحة.

تعرض شاشة إعدادات Windows Insider حلقة "بطيئة"
(معاينة كبيرة)

ملاحظة : بعد نشر هذا المقال ، علمت أن WSL 2 ليست في الواقع على الحلقة البطيئة. ستحتاج إلى أن تكون على الخاتم السريع للحصول عليه. لا بد أنني كنت في الحلقة السريعة في مرحلة ما أثناء كتابة هذا المقال. رنين سريع جدا هو. حظا سعيدا على الشريحة!

بعد ذلك ، تحتاج إلى تمكين ميزة "Virtual Machine Platform" في Windows ، والتي تتطلبها WSL الإصدار 2. للوصول إلى هذه الشاشة ، اضغط على مفتاح Windows واكتب "ميزات windows". ثم حدد "تشغيل ميزات Windows أو إيقاف تشغيلها". حدد "Virtual Machine Platform". يجب أن يكون خيار "Windows Subsystem for Linux" ممكّنًا بالفعل.

شاشة "ميزات Windows" مع تمييز "Virtual Machine Platform" و "نظام Windows الفرعي لنظام Linux"
(معاينة كبيرة)

الآن بعد أن تم تمكين WSL ، يمكنك تثبيت Linux. من المفارقات أن تفعل هذا مباشرة من متجر Windows. في عام 2019 فقط أقترح عليك "تثبيت Linux من متجر Windows".

هناك العديد من التوزيعات المختلفة للاختيار من بينها ، ولكن Ubuntu ستكون الأكثر دعمًا عبر جميع الأدوات التي سنقوم بتكوينها لاحقًا - بما في ذلك VS Code. تفترض جميع الإرشادات التي تأتي من هنا فصاعدًا تثبيت Ubuntu. إذا قمت بتثبيت توزيعة مختلفة ، فإن كل الرهانات متوقفة.

ابحث عن "Ubuntu" من متجر Windows. سيكون هناك ثلاثة للاختيار من بينها: Ubuntu و Ubuntu 18.04 و Ubuntu 16.04. Ubuntu يحب حقًا رقم الإصدار الصغير هذا ، أليس كذلك؟

عنصر "Ubuntu" في متجر Windows
(معاينة كبيرة)

توزيعة "Ubuntu" (الأولى في لقطة الشاشة هذه) هي "النسخة الوصفية" ، أو بالأحرى عنصر نائب يشير فقط إلى أحدث إصدار. اعتبارًا من الآن ، هذا هو 18.04.

ذهبت مع النسخة الوصفية لأنني سأوضح لك لاحقًا كيفية تصفح نظام ملفات Linux باستخدام Windows Explorer ومن الفوضى نوعًا ما أن يكون لديك "Ubuntu 18.04" كاسم محرك مقابل "Ubuntu" فقط.

هذا التثبيت سريع جدًا اعتمادًا على اتصالك بالإنترنت. يبلغ حجمها حوالي 215 ميغا بايت فقط ، لكنني على اتصال جيجابت هنا وكيف تعرف ما إذا كان شخص ما على اتصال جيجابت؟ لا تقلق ، سيقولون لك.

بمجرد التثبيت ، سيكون لديك الآن تطبيق "Ubuntu" في قائمة البداية.

تم تثبيت Ubuntu ويظهر في قائمة ابدأ في Windows
(معاينة كبيرة)

إذا قمت بالنقر فوق ذلك ، فستحصل على محطة Bash!

محطة Ubuntu تعمل على Windows
(معاينة كبيرة)

خذ لحظة للاستمتاع بمعجزة التكنولوجيا.

بشكل افتراضي ، ستعمل في الإصدار 1. من WSL. للترقية إلى الإصدار 2 ، ستحتاج إلى فتح محطة PowerShell وتشغيل أمر.

اضغط على مفتاح "Windows" واكتب "Powershell".

عنصر "Powershell" في قائمة البداية
(معاينة كبيرة)

من محطة PowerShell الطرفية ، يمكنك معرفة أي إصدار من WSL لديك عن طريق تنفيذ wsl --list --verbose .

عمل قائمة مطولة لجميع مثيلات WSL التي تعمل من داخل Powershell
(معاينة كبيرة)

إذا كنت تعرض الإصدار 1 ، فستحتاج إلى تنفيذ الأمر --set-version وتحديد اسم المثيل (Ubuntu) والإصدار الذي تريده (2).

 wsl --set-version Ubuntu 2 
ضبط إصدار WSL على الإصدار 2 باستخدام Powershell
(معاينة كبيرة)

سيستغرق هذا بعض الشيء ، اعتمادًا على كمية اللحوم الموجودة في جهازك. استغرق مني "بعض الدقائق" عطاء أو ناخذ. عند الانتهاء ، ستكون على أحدث وأكبر إصدار من WSL.

هو دماغك على Linux… على Windows.

Linux ليس Windows. WSL ليس موجه bash أعلى نظام تشغيل Windows. إنه نظام تشغيل كامل في حد ذاته بهيكل مجلد خاص به وتطبيقات مثبتة. إذا قمت بتثبيت Node باستخدام مثبت Windows ، فستفشل كتابة node في Linux لأن Node غير مثبت في Linux. تم تثبيته على نظام Windows.

ومع ذلك ، فإن السحر الحقيقي لـ WSL يكمن في الطريقة التي يربط بها بسلاسة بين Windows و Linux بحيث تظهر كنظام ملفات واحد على جهازك.

التنقل بين الملفات والمجلدات

بشكل افتراضي ، تقوم محطة Ubuntu بإسقاطك في دليل Linux الرئيسي (أو /home/your-user-name ). يمكنك الانتقال إلى جانب Windows بالذهاب إلى /mnt/c .

محطة Ubuntu مع محتويات محرك الأقراص C.
(معاينة كبيرة)

لاحظ أن بعض الأذونات مرفوضة هنا. سأضطر إلى النقر بزر الماوس الأيمن فوق رمز Ubuntu والنقر فوق "تشغيل كمسؤول" للوصول إلى هذه الملفات. هذه هي الطريقة التي يعمل بها Windows على أذونات مرتفعة. لا يوجد sudo على Windows.

إطلاق التطبيقات

يمكنك تشغيل أي تطبيق Windows من محطة Ubuntu. على سبيل المثال ، يمكنني فتح مستكشف Windows من محطة Unbuntu.

مستكشف Windows ومحطة Ubuntu
(معاينة كبيرة)

هذا أيضا يعمل في الاتجاه المعاكس. يمكنك تنفيذ أي تطبيق مثبت على جانب Linux. أنا هنا أقوم بتنفيذ “fortune” مثبت في Linux من سطر أوامر Windows. (لأنه ليس تثبيت Linux مناسبًا بدون ثروات عشوائية لا معنى لها.)

يقوم سطر أوامر Windows بتنفيذ برنامج Linux “الحظ”
(معاينة كبيرة)

نظامي تشغيل مختلفين. نظامان مختلفان للملفات. مجموعتان مختلفتان من التطبيقات المثبتة. ترى كيف يمكن أن يصبح هذا مربكا؟

من أجل الحفاظ على كل شيء على ما يرام ، أوصي بأن تحتفظ بجميع ملفات وأدوات تطوير JavaScript الخاصة بك مثبتة على جانب Linux للأشياء. ومع ذلك ، فإن القدرة على التنقل بين Windows و Linux والوصول إلى الملفات من كلا النظامين هي السحر الأساسي لـ WSL. لا تنس ذلك ، لأنه ما يجعل هذا الإعداد بالكامل أفضل من مجرد صندوق Linux قياسي.

تهيئة بيئة التطوير الخاصة بك

من الآن فصاعدًا ، سأقدم لك قائمة بالعناصر ذات الرأي لما أعتقد أنه يجعل نظام Linux قاتلًا على إعداد Windows. فقط تذكر: آرائي فقط. آراء . يحدث فقط أنها مثل جميع آرائي صحيحة 100٪.

الحصول على محطة أفضل

نعم ، لقد حصلت على محطة طرفية عند تثبيت Ubuntu. إنها في الواقع وحدة تحكم Windows متصلة بتوزيعة Linux الخاصة بك. إنها ليست وحدة تحكم سيئة. يمكنك تغيير حجمه وتشغيل النسخ / اللصق (في الإعدادات). لكن لا يمكنك فعل أشياء مثل علامات التبويب أو فتح نوافذ جديدة. تمامًا مثل الكثير من الأشخاص الذين يستخدمون برامج طرفية بديلة على نظام Mac (أستخدم Hyper) ، هناك خيارات أخرى لنظام التشغيل Windows أيضًا. تحتوي قائمة Awesome WSL على Github على قائمة شاملة جدًا.

هذه كلها محاكيات جيدة ، ولكن هناك خيارًا جديدًا تم إنشاؤه بواسطة أشخاص يعرفون Windows جيدًا.

تعمل Microsoft على تطبيق جديد يسمى "Windows Terminal".

عنصر Windows Terminal في متجر Windows
(معاينة كبيرة)

يمكن تثبيت Windows Terminal من متجر Windows وهو حاليًا في وضع المعاينة. لقد كنت أستخدمها منذ فترة طويلة الآن ، ولديها ميزات كافية ومستقرة بدرجة كافية بالنسبة لي لأمنحها تأييدًا كاملاً.

يتميز Windows Terminal الجديد بواجهة علامة تبويب كاملة ، نسخ / لصق ، ملفات تعريف متعددة ، خلفيات شفافة ، صور خلفية - حتى صور خلفية شفافة. إنه يوم ميداني إذا كنت ترغب في تخصيص محطتك ، وقد جئت للفوز في سباق الأكياس هذا.

ها هي المحطة الحالية الخاصة بي. سنتعرف على بعض التعديلات المهمة هنا.

المحطة الطرفية الحالية للمؤلف: خلفية زرقاء داكنة مع كوكب كرتوني في الركن الأيمن السفلي. نص باللونين الأخضر والأبيض.
(معاينة كبيرة)

Windows Terminal قابل للتخصيص تمامًا. يتيح لك النقر على السهم " " أعلى اليسار (بجوار علامة " + ") الوصول إلى "الإعدادات". سيؤدي هذا إلى فتح ملف JSON.

ربط النسخ / اللصق

توجد جميع روابط المفاتيح في الجزء العلوي من الملف. أول شيء فعلته هو تعيين "نسخ" إلى Ctrl + C واللصق على Ctrl + V. وإلا كيف سأقوم بنسخ ولصق أوامر من Stack Overflow التي لا أفهمها؟

 { "command": "copy", "keys": ["ctrl+c"] }, { "command": "paste", "keys": ["ctrl+v"] },

تكمن المشكلة في أن Ctrl + C قد تم تعيينه بالفعل إلى SIGINT ، أو أمر Interrupt / kill على نظام Linux. هناك الكثير من المحطات الطرفية لنظام التشغيل Windows والتي تتعامل مع هذا عن طريق تعيين Copy / Paste إلى Ctrl + Shift + C و Ctrl + Shift + V على التوالي. تكمن المشكلة في أن النسخ / اللصق هو Ctrl + C / Ctrl + V في كل مكان آخر في Windows. ظللت أضغط على Ctrl + C في المحطة مرارًا وتكرارًا في محاولة لنسخ الأشياء. لم أستطع التوقف عن فعل ذلك.

تتعامل محطة Windows مع هذا بشكل مختلف. إذا تم تمييز النص وضغطت على Ctrl + C ، فسيتم نسخ النص. إذا كانت هناك عملية قيد التشغيل ، فإنها لا تزال ترسل أمر SIGINT وتقاطعها. يعني أنه يمكنك تعيين Ctrl + C / Ctrl + V بأمان للنسخ / اللصق في Windows Terminal ولن يتعارض ذلك مع قدرتك على مقاطعة العمليات.

من كان يعتقد أن النسخ / اللصق يمكن أن يسبب الكثير من وجع القلب؟

تغيير ملف التعريف الافتراضي

ملف التعريف الافتراضي هو ما يظهر عند فتح علامة تبويب جديدة. بشكل افتراضي ، هذا هو Powershell. سترغب في التمرير لأسفل والعثور على ملف تعريف Linux. هذا هو الذي يفتح wsl.exe -d Ubuntu . انسخ GUID الخاص به defaultProfile في إعداد ملف التعريف الافتراضي.

لقد قمت بنقل هذين الإعدادين بحيث يكونان بجوار بعضهما البعض لتسهيل رؤيتهما:

تم تمييز ملف تعريف Terminal الافتراضي في ملف settings.json
(معاينة كبيرة)

تعيين الخلفية

أحب أن تكون خلفيتي ذات لون صلب داكن مع شعار مسطح في الزاوية اليمنى. أفعل هذا لأنني أريد أن يكون الشعار ساطعًا ومرئيًا ، لكن ليس في طريق النص. هذه الصورة التي صنعتها بنفسي ، ولكن هناك مجموعة رائعة من الصور المسطحة للاختيار من بينها في Simple Desktops.

تم تعيين backgroundImage بخاصية backgroundImage:

 "backgroundImage": "c:/Users/YourUserName/Pictures/earth.png" 
صورة مربعة زرقاء بها كوكب كارتون في الركن الأيمن السفلي
(معاينة كبيرة)

ستلاحظ أيضًا إعدادًا يسمى "أكريليك". هذا ما يمكّنك من ضبط عتامة الخلفية. إذا كان لديك لون خلفية صلب ، فهذا بسيط جدًا.

 "background": "#336699", "useAcrylic": true, "acrylicOpacity": 0.5 
المحطة ذات الخلفية شفافة بعض الشيء
(معاينة كبيرة)

يمكنك سحب هذا مع صورة الخلفية أيضًا ، من خلال الجمع بين إعداد arcylicOpacity مع backgroundImageOpacity :

 "backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png", "useAcrylic": true, "acrylicOpacity": 0.5 
المحطة مع صورة شفافة وخلفية شفافة
(معاينة كبيرة)

بالنسبة لموضوعي ، فإن الشفافية تجعل كل شيء يبدو مكتومًا ، لذلك أبقيت useAcrylic على false .

تغيير الخط

يعمل الفريق الذي يبني Windows Terminal أيضًا على خط جديد يسمى "Cascadia Code". لم يكن متاحًا حتى وقت كتابة هذا التقرير ، لذلك تحصل على خط Windows الافتراضي بدلاً من ذلك.

الخط الافتراضي في Windows Terminal هو "Consolas". هذا هو نفس الخط الذي يستخدمه سطر أوامر Windows. إذا كنت تريد شعور Ubuntu الحقيقي ، يشير Chris Hoffman إلى كيفية تثبيت خط Ubuntu Mono الرسمي.

إليك ما قبل وما بعد حتى تتمكن من رؤية الفرق:

 "fontFace": "Ubuntu Mono" 
مقارنة جنبًا إلى جنب بين خطوط Consolas و Unbuntu Mono في الجهاز
(معاينة كبيرة)

تبدو متشابهة إلى حد كبير. يتمثل الاختلاف الرئيسي في تباعد Ubuntu Mono مما يجعل الجهاز أكثر إحكامًا ونظافة.

الألوان

توجد جميع أنظمة الألوان في الجزء السفلي من ملف الإعدادات. لقد قمت بنسخ مخطط ألوان "كامبل" كخط أساس. أحاول مطابقة الألوان بأسمائهم ، لكنني لا أخشى أن أكون شريرًا أيضًا. سأقوم بتعيين "#ffffff" إلى "أزرق" - حتى أنني لا أهتم.

إعدادات نظام الألوان من ملف settings.json
(معاينة كبيرة)

إذا كنت تحب هذا المخطط المحدد الذي أطلق عليه اسم "Earth" ، فقد جمعت هذا الجوهر معًا حتى لا تضطر إلى نسخ كل هذه الفوضى يدويًا من لقطة شاشة.

ملاحظة : تأتي معاينات الألوان بموجب امتداد "Color Highlight" الخاص بـ VS Code.

تغيير دليل البدء الافتراضي

بشكل افتراضي ، يقوم ملف تعريف WSL بإسقاطك في الدليل الرئيسي على جانب Windows. بناءً على الإعداد الذي أوصي به في هذه المقالة ، سيكون من الأفضل أن يتم إسقاطه في مجلد Linux home الخاص بك بدلاً من ذلك. للقيام بذلك ، قم بتغيير إعداد startingDirectory في ملف تعريف "Ubuntu" الخاص بك:

 "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\burkeholland"

لاحظ المسار هناك. يمكنك استخدام هذا المسار (مطروحًا منه شرطات الهروب الإضافية) للوصول إلى WSL من سطر أوامر Windows.

يتم تشغيل أمر "dir" على دليل Linux الرئيسي من سطر أوامر Windows
(معاينة كبيرة)

قم بتثبيت Zsh / Oh-My-Zsh

إذا لم تستخدم Zsh و Oh-My-Zsh من قبل ، فأنت في مكان حقيقي. Zsh (أو “Z Shell”) هو غلاف بديل لنظام التشغيل Linux. إنه يتوسع في القدرات الأساسية لـ Bash ، بما في ذلك تبديل الدليل الضمني (لا حاجة لكتابة cd ) ، ودعم أفضل للسمات ، ومطالبات أفضل ، وأكثر من ذلك بكثير.

لتثبيت Zsh ، احصل عليه باستخدام مدير الحزم المناسب ، والذي يخرج من الصندوق مع تثبيت Linux الخاص بك:

 sudo apt install zsh

قم بتثبيت oh-my-zsh باستخدام curl. Oh-my-zsh عبارة عن مجموعة من التكوينات لـ zsh تعمل على تحسين تجربة shell بشكل أكبر مع المكونات الإضافية والسمات وعدد لا يحصى من اختصارات لوحة المفاتيح.

 sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

ثم سيسألك عما إذا كنت تريد تغيير قشرتك الافتراضية إلى Zsh. أنت تفعل ، لذا أجب بالإيجاب وأنت الآن جاهز للعمل مع Zsh و Oh-My-Zsh.

يسألك الجهاز عما إذا كنت ترغب في تغيير الغلاف الافتراضي
(معاينة كبيرة)

ستلاحظ أن المطالبة أصبحت أكثر نظافة الآن. يمكنك تغيير مظهر هذا الطلب عن طريق تغيير السمة في الملف ~/.zshrc .

افتحه باستخدام nano ، والذي يشبه نوعًا ما VIM ، ولكن يمكنك تحرير الأشياء والخروج عندما تحتاج إلى ذلك.

 nano ~/.zshrc

قم بتغيير الخط الذي يحدد السمة. يوجد عنوان URL فوقه مع قائمة كاملة بالموضوعات. أعتقد أن "السحابة" رائعة. و لطيف.

يتم تعيين سمة "السحابة" في ملف zshrc
(معاينة كبيرة)

للحصول على التغييرات التي تم إجراؤها على ملف .zshrc ، ستحتاج إلى الحصول على مصدرها:

 source ~/.zshrc 
موجه موضوع "السحابة"
(معاينة كبيرة)

ملاحظة : إذا اخترت سمة مثل "agnoster" والتي تتطلب صورًا رمزية ، فستحتاج إلى نسخة مدمجة من powerline من Ubuntu Mono تحتوي على… glyphs. خلاف ذلك ، ستكون محطتك الطرفية مليئة بالأحرف الغريبة كما لو أنك قمت بهرس وجهك على لوحة المفاتيح. تقدم Nerd Fonts واحدة يبدو أنها تعمل بشكل جيد.

الآن يمكنك القيام بأشياء مثل تغيير الدلائل فقط عن طريق إدخال اسم الدليل. لا يوجد cd مطلوب. هل تريد العودة إلى دليل؟ فقط افعل .. لست مضطرًا حتى إلى كتابة اسم الدليل بالكامل ، فقط اكتب الأحرف القليلة الأولى واضغط على علامة التبويب. سيعطيك Zsh قائمة بجميع الملفات / الدلائل التي تطابق بحثك ويمكنك التنقل بينها.

تم تمييز المحطة الطرفية بأحد المسارات العديدة
(معاينة كبيرة)

تركيب العقدة

بصفتك مطور ويب ، ربما تريد تثبيت Node. أفترض أنك لست مضطرًا إلى تثبيت Node للقيام بتطوير الويب ، ولكن من المؤكد أنه سيبدو الأمر كذلك في عام 2019!

قد تكون غريزتك الأولى هي تثبيت العقدة باستخدام apt ، وهو ما يمكنك القيام به ، لكنك ستندم عليه لسببين:

  1. إصدار Node on apt قديم بشكل مؤلم ؛
  2. يجب عليك تثبيت Node مع مدير الإصدار حتى لا تواجه مشكلات تتعلق بالأذونات.

أفضل طريقة لحل هاتين المشكلتين هي تثبيت nvm (Node Version Manager). نظرًا لأنك قمت بتثبيت zsh ، يمكنك فقط إضافة المكون الإضافي nvm في ملف zshrc الخاص بك وسيتولى zsh الباقي.

أولاً ، قم بتثبيت المكون الإضافي عن طريق الاستنساخ في zsh-nvm repo. (لا تقلق ، تأتي Git بشكل قياسي في تثبيت Ubuntu الخاص بك.)

 git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm

ثم قم بإضافته كمكوِّن إضافي في ملف ~/.zshrc .

 `nano ~/.zshrc` plugins (zsh-nvm git) 
ملف zshrc مع إضافة zsh-vnm-plugin
(معاينة كبيرة)

تذكر أن مصدر ملف zshrc مرة أخرى مع source ~/.zshrc وسترى nvm قيد التثبيت.

تعرض المحطة تقدم تثبيت nvm
(معاينة كبيرة)

الآن يمكنك تثبيت العقدة مع nvm. يجعل من السهل تثبيت إصدارات متعددة من العقدة جنبًا إلى جنب ، والتبديل بينها دون عناء. أيضًا ، لا توجد أخطاء في الأذونات عند إجراء تثبيتات npm عالمية!

 nvm install --lts

أوصي بهذا فوق تثبيت nvm القياسي لأن المكون الإضافي يمنحك القدرة على ترقية nvm بسهولة. هذا نوع من الألم مع التثبيت القياسي "curl". إنه أمر واحد مع البرنامج المساعد.

 nvm upgrade

استخدام الاقتراحات التلقائية

أحد المكونات الإضافية المفضلة جدًا لـ zsh هو zsh-autosuggestions. يتذكر الأشياء التي كتبتها في الجهاز من قبل ، ثم يتعرف عليها عندما تبدأ في كتابتها مرة أخرى بالإضافة إلى "اقتراح تلقائي" للسطر الذي قد تحتاجه. أصبح هذا المكون الإضافي مفيدًا مرات أكثر مما أتذكره - تحديدًا عندما يتعلق الأمر بأوامر CLI الطويلة التي استخدمتها في الماضي ، ولكن لا يمكنني تذكرها على الإطلاق.

استنساخ الريبو في مجلد ملحقات zsh:

 git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

ثم قم بإضافته إلى ملحقات zsh ومصدر ملف zshrc:

 nano ~/.zshrc # In the .zshrc file plugins(zsh-nvm zsh-autosuggestions git) source ~/.zshrc

يقرأ المكون الإضافي سجل zsh الخاص بك ، لذا ابدأ في كتابة بعض الأوامر التي كتبتها من قبل وشاهد السحر. حاول كتابة الجزء الأول من أمر النسخ الطويل أعلاه.

تعرض المحطة الطرفية اقتراحات تلقائية لـ zsh تكمل أمر git clone
(معاينة كبيرة)

إذا قمت بالضغط على ، فسيتم إكمال الأمر تلقائيًا. إذا واصلت الضغط على ، فسوف يتنقل عبر أي من الأوامر الموجودة في سجلك والتي قد تكون مطابقة.

اختصارات لوحة المفاتيح المهمة

هناك بعض الاختصارات الطرفية التي أستخدمها طوال الوقت. أجد هذا مع جميع أدواتي - بما في ذلك VS Code. محاولة تعلم جميع الاختصارات مضيعة للوقت لأنك لن تستخدمها بما يكفي لتذكرها.

فيما يلي بعض الأشياء التي أستخدمها بانتظام:

اختصار المحطة ماذا تعمل، أو ماذا تفعل؟
السيطرة + L. يؤدي هذا إلى مسح المحطة وإعادتك إلى القمة. إنها تعادل كتابة "clear".
Ctrl + U هذا يوضح الخط الحالي فقط.
السيطرة + أ يرسل المؤشر إلى بداية سطر الأوامر.
السيطرة + E. الانتقال إلى نهاية السطر.
السيطرة + K. احذف جميع الأحرف بعد المؤشر.

هذا هو! كل شيء آخر تعلمته على الأرجح ثم نسيته لأنه لا فائدة منه أبدًا.

تكوين Git (Hub / Lab / Whatevs)

يأتي Git على Ubuntu ، لذلك لا يلزم التثبيت. يمكنك اتباع التعليمات الموجودة على مضيف التحكم بالمصادر الذي تختاره للحصول على مفاتيح ssh الخاصة بك التي تم إنشاؤها والعمل.

لاحظ أنه في تعليمات Github ، يخبرك باستخدام الأداة المساعدة "copy" لنسخ مفتاح ssh الخاص بك. يحتوي Ubuntu على الأمر "xcopy" ، لكنه لن يعمل هنا لأنه لا يوجد توافق بين نظامي Linux و Windows من حيث الحافظة.

بدلاً من ذلك ، يمكنك فقط استخدام Windows Clipboard القابل للتنفيذ واستدعائه مباشرة من الجهاز. تحتاج إلى الحصول على النص أولاً مع cat ، ثم توجيهه إلى حافظة Windows.

 cat ~/.ssh/id_rsa.pub | clip.exe

تخبرك مستندات Github بالتأكد ssh-agent . ليست كذلك. سترى هذا عندما تحاول إضافة مفتاحك إلى الوكيل:

تظهر المحطة الطرفية أن وكيل ssh لا يعمل
(معاينة كبيرة)

يمكنك بدء تشغيل الوكيل ، ولكن في المرة التالية التي تعيد فيها تشغيل Windows أو يتم إيقاف WSL ، سيتعين عليك تشغيله مرة أخرى. هذا بسبب عدم وجود نظام تهيئة في WSL. لا يوجد systemd أو عملية أخرى تبدأ جميع خدماتك عند بدء WSL. WSL لا يزال قيد المعاينة ، ويعمل الفريق على إيجاد حل لذلك.

في غضون ذلك ، صدق أو لا تصدق ، هناك مكون إضافي zsh لهذا أيضًا. يطلق عليه ssh-agent ، ويتم تثبيته مع oh-my-zsh ، لذلك كل ما عليك فعله هو الرجوع إليه في ملف .zshrc .

 zsh-nvm zsh-autosuggestions ssh-agent git

سيبدأ هذا وكيل ssh تلقائيًا إذا لم يتم تشغيله في المرة الأولى التي تقوم فيها بتشغيل WSL. الجانب السلبي هو أنه سيطلب منك عبارة مرورك في كل مرة يتم فيها بدء WSL من جديد. هذا يعني بشكل أساسي في أي وقت تقوم فيه بإعادة تشغيل جهاز الكمبيوتر الخاص بك.

تطالب المحطة الطرفية بعبارة المرور الخاصة بمفتاح rsa
(معاينة كبيرة)

رمز VS و WSL

لا يحتوي WSL على واجهة مستخدم رسومية ، لذلك لا يمكنك تثبيت أداة مرئية مثل VS Code. يحتاج ذلك إلى التثبيت على جانب Windows. يمثل هذا مشكلة لأن لديك برنامجًا يعمل على جانب Windows للوصول إلى الملفات من جانب Linux ، ويمكن أن ينتج عن ذلك كل أنواع المراوغات ومشكلات "رفض الإذن". كقاعدة عامة ، توصي Microsoft بعدم تغيير الملفات في جانب WSL مع برامج Windows.

لحل هذه المشكلة ، يوجد امتداد لرمز VS يسمى "Remote WSL". تم إنشاء هذا الامتداد بواسطة Microsoft ، ويسمح لك بالتطوير داخل WSL ، ولكن من داخل VS Code.

بمجرد تثبيت الامتداد ، يمكنك إرفاق VS Code مباشرة بجانب Ubuntu عن طريق فتح Command Palette ( Ctrl + Shift + P) وحدد "Remote-WSL: نافذة جديدة".

رمز VS مع تمييز الأمر "Remote WSL: New Window" في لوحة الأوامر
(معاينة كبيرة)

يفتح هذا مثيلًا جديدًا من VS Code يتيح لك العمل كما لو كنت في جانب Linux بالكامل. يؤدي إجراء "ملف / فتح" إلى تصفح نظام ملفات Ubuntu بدلاً من نظام Windows.

عرض VS Code "فتح ملف"
(معاينة كبيرة)

تفتح المحطة الطرفية المدمجة في VS Code إعداد zsh المخصص بشكل جميل. كل شيء "يعمل فقط" كما ينبغي عندما يكون لديك ملحق Remote WSL مثبتًا.

إذا فتحت رمزًا من جهازك الطرفي code . ، سيكتشف VS Code تلقائيًا أنه تم فتحه من WSL ، وسيقوم تلقائيًا بإرفاق امتداد WSL البعيد.

امتدادات رمز VS مع WSL البعيد

يعمل امتداد Remote WSL لـ VS Code عن طريق إعداد خادم صغير على جانب Linux ، ثم الاتصال به من VS Code على جانب Windows. في هذه الحالة ، لن تظهر الامتدادات التي قمت بتثبيتها في VS Code تلقائيًا عند فتح مشروع من WSL.

على سبيل المثال ، لدي مشروع Vue مفتوح في VS Code. على الرغم من أنني قمت بتثبيت جميع امتدادات Vue الصحيحة لتمييز بناء الجملة والتنسيق وما شابه ، فإن VS Code يتصرف كما لو لم يسبق له مثيل في ملف .vue من قبل.

يتم فتح ملف .vue في VS Code بدون تمييز بناء الجملة
(معاينة كبيرة)

يمكن تمكين كافة الامتدادات التي قمت بتثبيتها في WSL. ابحث فقط عن الامتداد الذي تريده في WSL ، وانقر فوق الزر "تثبيت في WSL".

الصفحة المقصودة لملحق Vetur VS Code في VS Code
(معاينة كبيرة)

ستظهر جميع الامتدادات المثبتة في WSL في القسم الخاص بها في عرض Extensions Explorer. إذا كان لديك الكثير من الامتدادات ، فقد يكون من المزعج بعض الشيء تثبيت كل واحدة على حدة. إذا كنت ترغب فقط في تثبيت كل امتداد لديك في WSL ، فانقر فوق رمز التنزيل السحابي الصغير في الجزء العلوي من قسم "محلي - مثبت".

عرض الامتدادات في VS Code مع تمييز تثبيت جميع الامتدادات في رمز WSL
(معاينة كبيرة)

كيفية إعداد دلائل التطوير الخاصة بك

هذه مقالة ذات رأي بالفعل ، لذا فإليك مقالًا لم تطلبه حول الطريقة التي أعتقد أنه يجب عليك بها هيكلة مشاريعك على نظام الملفات الخاص بك.

احتفظ بجميع مشاريعي في جانب Linux. لا أضع مشروعاتي في "المستندات" ثم أحاول العمل معهم من WSL. عقلي لا يستطيع التعامل مع ذلك.

أقوم بإنشاء مجلد يسمى /dev في جذر المجلد /home في Linux. داخل هذا المجلد ، قمت بإنشاء مجلد آخر بنفس اسم Github repo: /burkeholland . هذا المجلد هو المكان الذي تذهب إليه جميع مشاريعي - حتى تلك التي لم يتم دفعها إلى Github.

إذا قمت باستنساخ الريبو من حساب Github مختلف (على سبيل المثال "microsoft") ، فسوف أقوم بإنشاء مجلد جديد في "dev" يسمى /microsoft . ثم أقوم باستنساخ الريبو في مجلد بداخله.

في الأساس ، أقوم بتقليد نفس بنية التحكم في المصدر على جهازي المحلي. أجد أنه من الأسهل بكثير التفكير في مكان وجود المشاريع وما هي المستودعات المرتبطة بها فقط بحكم موقعها. إنه بسيط ، لكنه فعال للغاية في مساعدتي في الحفاظ على كل شيء منظمًا. وأنا بحاجة إلى كل المساعدة التي يمكنني الحصول عليها.

رأي المؤلفين هيكل المجلد المدرجة في المحطة
(معاينة كبيرة)

استعراض الملفات من مستكشف Windows

هناك أوقات تحتاج فيها إلى الحصول على ملف في Linux من جانب Windows. الشيء الجميل في WSL هو أنه لا يزال بإمكانك فعل ذلك.

إحدى الطرق هي الوصول إلى WSL تمامًا مثل محرك الأقراص المعين. قم بالوصول إليه باستخدام \\wsl$ مباشرة من شريط المستكشف:

 \\wsl$ 
مستكشف Windows هو تثبيت Ubuntu كدليل مُحمّل
(معاينة كبيرة)

يمكنك القيام بذلك لعدد من الأسباب المختلفة. على سبيل المثال ، احتجت اليوم فقط إلى امتداد Chrome غير موجود في المتجر الإلكتروني. لذلك قمت باستنساخ الريبو في WSL ، ثم انتقلت إليه كـ "ملحق غير مضغوط" وقمت بتحميله في Edge.

الشيء الوحيد الذي أفعله مع بعض التردد في Linux هو فتح الدليل الذي يحتوي على ملف مباشرة من المحطة. يمكنك القيام بذلك في WSL أيضًا عن طريق استدعاء explorer.exe مباشرةً. على سبيل المثال ، يفتح هذا الأمر الدليل الحالي في مستكشف Windows.

 $ explorer.exe . 
صورة GIF توضح فتح مستكشف Windows في الدليل الحالي من الجهاز

هذا الأمر مرهق بعض الشيء. على Linux ، إنه open . . يمكننا صنع نفس السحر من خلال إنشاء اسم مستعار في ~/.zshrc .

 alias open="explorer.exe"

عامل ميناء

عندما قلت أن كل الأدوات يجب أن تكون على جانب Linux ، كنت أعني ذلك. يتضمن Docker.

هذا هو المكان الذي يبدأ فيه المطاط حقًا في الالتقاء بالطريق. ما نحتاجه هنا هو Docker ، الذي يعمل داخل Linux ويعمل داخل Windows. إنها تشبه إلى حد ما دمية التعشيش الروسية عندما تكتبها في منشور مدونة. في الواقع ، الأمر بسيط جدًا.

ستحتاج إلى الإصدار الصحيح من Docker لنظام التشغيل Windows. حتى وقت كتابة هذا التقرير ، هذه هي WSL 2 Tech Preview.

عند تشغيل برنامج التثبيت ، سيسألك عما إذا كنت تريد استخدام حاويات Windows بدلاً من حاويات Linux. أنت بالتأكيد تفعل. خلاف ذلك ، لن تحصل على خيار تشغيل Docker في WSL.

شاشة تثبيت Docker مع تحديد خيار "Use Windows Containers"
(معاينة كبيرة)

يمكنك الآن تمكين Docker في WSL بالنقر فوق العنصر الموجود في علبة النظام وتحديد "WSL 2 Tech Preview":

خيار WSL2 Tech Preview في قائمة سياق Docker Daemon
(معاينة كبيرة)

بعد بدء الخدمة ، يمكنك استخدام Docker داخل WSL تمامًا كما تتوقع. يوفر تشغيل Docker في WSL تعزيزًا كبيرًا للأداء ، بالإضافة إلى زيادة في وقت البدء البارد على الحاويات.

هل يمكنني أن أوصيك أيضًا بتثبيت امتداد Docker لـ VS Code؟ يضع واجهة مرئية على إعداد Docker الخاص بك وعمومًا يجعل من السهل العمل مع Docker لأنك لست مضطرًا لتذكر كل علامات وخيارات سطر الأوامر هذه.

احصل على المزيد من Bash على Windows

في هذه المرحلة ، يجب أن تحصل على فكرة حول كيفية وضع Bash على Windows ، وكيف يعمل بمجرد الحصول عليه هناك. يمكنك تخصيص جهازك الطرفي إلى ما لا نهاية ، وهناك كل أنواع برامج الراد التي يمكنك إضافتها للقيام بأشياء مثل الضبط التلقائي لمتغيرات PATH ، وإنشاء أسماء مستعارة ، والحصول على بقرة ASCII في جهازك ، وغير ذلك الكثير.

أدى تشغيل Bash على Windows إلى فتح عالم جديد تمامًا بالنسبة لي. أنا قادر على الجمع بين Windows الذي أحبه في جانب الإنتاجية ، و Linux الذي أعتمد عليه كمطور. وأفضل ما في الأمر أنه يمكنني إنشاء تطبيقات لكلا النظامين الأساسيين الآن باستخدام جهاز واحد.

قراءة متعمقة

يمكنك قراءة المزيد عن Bash على Windows هنا:

  • "دليل تثبيت نظام Windows الفرعي لنظام Linux لنظام التشغيل Windows 10" ، Microsoft Docs
  • "كيفية تثبيت واستخدام Bash Shell على نظام التشغيل Windows 10 ،" كريس هوفمان ، How-To Geek
  • "مشاركة SSH مع WSL" ، درو ويلسون
  • "أصبح مجنونًا مع نظام Window الفرعي لنظام Linux ،" Brian Ketelsen
  • "كل ما يمكنك فعله باستخدام Bash Shell الجديد لنظام التشغيل Windows 10 ،" كريس هوفمان ، How-To Geek

شكر خاص لبريان كيتلسن ومات هيرنانديز وريتش تيرنر وكريغ لوين على صبرهم ومساعدتهم وتوجيههم بشأن هذه المقالة.