<?xml version="1.0"?>
<rss version="2.0"><channel><title>DevOps: Linux &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/page/10/?d=4</link><description>DevOps: Linux &#x644;&#x64A;&#x646;&#x643;&#x633;</description><language>ar</language><item><title>&#x627;&#x644;&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x644;&#x646;&#x647;&#x627;&#x626;&#x64A; &#x644;&#x627;&#x62E;&#x62A;&#x64A;&#x627;&#x631; &#x62A;&#x648;&#x632;&#x64A;&#x639;&#x629; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%86%D9%87%D8%A7%D8%A6%D9%8A-%D9%84%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r48/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_05/linux-distros.png.e75e713e6f413446a94c9b6cc227c5ea.png" /></p>

<p dir="rtl">انتشر صيت نظام التشغيل غنو لينكس Gnu Linux (المعروف اختصارًا بلينكس) في السنوات الأخيرة، بعد استيلاء منصة الهواتف الذكية أندرويد على أكثر من 85% من السوق، وكثرة الحديث عن كون هذه المنصة مبنية على نواة لينكس القوية، والمشهود لها بالاستقرار، سرعة التطوير والأمان، وخلافًا لما كان الحال عليه من قبل فقد لوحظ تنامي الرغبة لتجريب لينكس على أجهزة سطح المكتب، تارةً بدافع حب الفضول والاستكشاف، وتارةً بغرض التعلم واكتساب الخبرة، وأحيانًا أخرى لاستخدامه في محاولات الاختراق وتجاوز الحماية.</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_05/linux-distros.png.5284f9e09ee18515fe20bfbadd9029f2.png"><img data-fileid="1935" class="ipsImage ipsImage_thumbnailed" alt="linux-distros.thumb.png.47060eda6376b7ab" src="https://academy.hsoub.com/uploads/monthly_2015_05/linux-distros.thumb.png.47060eda6376b7abc5e97179ef107e64.png"></a></p><p dir="rtl">إلا أن أول ما يصطدم به الراغب في خوض غمار التجربة الجديدة عدم وجود نظامٍ باسم لينكس يمكن تنزيله من موقع رسمي واستخدامه على الفور! إذ يمكن لمستخدمي Microsoft Windows الحصول على أقراص ليزرية من السوق تتضمن نسخ Windows المختلفة أو تحميلها من الشبكة، بينما تأتي أجهزة Apple محملةً أصلا بنظام التشغيل OS X، أما كتابة Download linux في محرّك البحث فسيفضي لنتائج بأسماء مختلفة، ولن يطول الوقت حتى يتعرف القادم إلى هنا على مفهوم «التوزيعة» وهي أقرب ما تكون بالمعنى إلى كونها «تجميعة»، فلينكس ما هو إلا النواة، بينما نحتاج إلى أدوات أخرى كالمترجمات Compilers والواجهات المرئية ومدراء النوافذ إضافة إلى تطبيقات المستخدم النهائي كمتصفح الإنترنت ومشغل الموسيقى إلخ، كلّ هذا حتى يصبح لدينا أخيرًا نظام تشغيل متكامل، ولتوفير مثل هذه الخطوات على المستخدمين تقوم فرق برمجية متطوعة أو تابعة لمؤسسات تجارية بالعمل المطلوب، كلّ وفق أفكاره وميوله، طارحين تجميعاتهم تلك على شكل حزمة واحدة جاهزة للاستخدام تسمى بالتوزيعة Distribution.</p><p dir="rtl">ومع عدم وجود أية قيود على العملية السابقة فقد فاق عدد التوزيعات المتاحة للتحميل والإستخدام المجاني ال 300 توزيعة، ليقف المستخدم المبتدئ أمامها في حيرة من أمره؛ ماذا يستخدم؟ ما التوزيعة الأنسب له؟ أو على الأقل بماذا يبدأ ومن أين ينطلق؟</p><p dir="rtl">ولا تشكل الحيرة السابقة مشكلة بحدّ ذاتها، إلا أن المشكلة تنجم عن الكيفية التي يُتعامل بها مع هذا السؤال، حيث إن التعاطي مع التوزيعات والفرق المجمّعة لها بات أشبه بالتحزب السياسي، بمعنى أن كلّ فريق يرى في خياره الصواب الأنسب، والأداء الأفضل، منوهًا إلى مثالب التوزيعات الأخرى ونقاط الضعف التي تعاني منها، لتدور أحيانًا حربٌ طاحنة، لا يكون الخاسر الأكبر فيها سوى المبتدئ، الذي تزداد حيرته أمام مقارنات لا يفقه منها شيء غالبًا.</p><p dir="rtl">خلال سبع سنوات من إستخدامي لـغنو لينكس كنظام تشغيل وحيد على مختلف الحواسيب، تعاملت مع التوزيعات العشرة الرئيسية، مثل Mint, Ubuntu, Debian, OpenSUSE, Fedora, Arch, Puppy وغيرها، والتي تتفرع منها وتبنى عليها باقي التنويعات المختلفة، وكمهووس بلينكس استغرق ذلك منيّ وقتًا طويلًا للغاية، كان سببًا في بعض الأحيان لتعطّل مهامي أو ضياع ملفاتي، إلا أنني راكمت أيضًا خبرة أودّ مشاركتها هنا.</p><p dir="rtl">لنتعرّف بدايةً على التوزيعات الرئيسيّة في عالم غنو لينكس:</p><h2 dir="rtl">دِبيان Debian</h2><p dir="rtl">أثناء دراسته في جامعة بوردو فرع علوم الحاسوب، كتب إيان موردك مع صديقته ديبرا (والتي ستصبح زوجته فيما بعد) «عقد دبيان» ويقصد به الفلسفة التي سيبنى عليها نظام التشغيل دبيان (منحوتًا من اسميهما ديب يان) والذي أطلق اصداره الأول عام 1993م مستمرًا حتى يومنا هذا، ليكون واحدًا من أعرق المشاريع المتعلقة بلينكس وأكثرها شعبية. قاد إيان فريقًا كبيرًا مكونًا من المبرمجين المتطوعين من مختلف دول العالم لبناء دبيان (يبلغ عددهم اليوم ألف مطوّر).</p><h3 dir="rtl">دبيان في نقاط</h3><p dir="rtl">- مشروع دبيان هو مؤسسة مجتمعية لا مركزية يطوره متطوعون حول العالم ويقوده قائد يجري انتخابه من قبل المجتمع بشكل دوري، إضافة إلى وجود نظام داخلي ودستور وقواعد تنظم عمل المشروع وتعطي الأولوية دومًا لرأي المطورين، نادرًا ما يوجد مثل هذا التنظيم لدى باقي الفرق.</p><p dir="rtl">- طَوّر مشروع دبيان نظام تحزيم يسمى Deb يهدف إلى إنشاء برامج جاهزة للتثبيت بدون تدخل برمجي من قبل المستخدم، حيث كانت برامج لينكس متوفرة أولًا بشكلها المصدري src (أي على شكل أكواد) وهي تتطلب من المستخدم أن يقوم بعمل Compile لها، وهذا ما يتطلب معرفة برمجية واسعة، وحل عدّة مشاكل أثناء ذلك (كالاعتماديات، وتضارب النسخ وغيرها). عام 1995 بدأ مشروع دبيان بتحزيم البرامج على شكل ملفات.deb جاهزة للتثبيت باستخدام الأداة Apt (ولاحقًا تم تسهيل ذلك من خلال أدوات أخرى مثل aptitude، apt-get من على سطر الأوامر، أو Synaptic على الواجهة الرسومية)، فبات كل ما يحتاجه المستخدم النهائي لتركيب أو تحديث أو إزالة البرامج هي بضع نقرات لا غير، متفوقًا بذلك على نظيره ويندوز.</p><p dir="rtl">يضم اليوم مستودع دبيان الرئيسي 43000 حزمة، بالإضافة إلى مستودعات أخرى تجعل من تثبيت الحزم وإداراتها أمرًا في غاية السهولة.</p><p dir="rtl">- يعتمد مشروع دبيان معايير صارمة في التحزيم وبناء النسخ الجديدة، لذا توصف التوزيعة عادةً بانها ثابتة كالصخر، ما دفع قرابة نصف توزيعات لينكس الأخرى على بناء نسخهم الخاصة إنطلاقًا منها.</p><p dir="rtl">- تعتبر دبيان من أكثر التوزيعات إلتزامًا بفلسفة غنو، حيث لا تضم مستودعاتها الرسمية سوى برمجيات مفتوحة المصدر.</p><p dir="rtl">- خلافًا لمعظم توزيعات غنو لينكس لا تتبع دبيان خططًا زمنية في إصداراتها، بل تتبع سياسة مفادها تصدر دبيان عندما تجهز!</p><p dir="rtl">- تأتي دبيان إفتراضيًا مع واجهة رسومية، ومثبت رسومي، وبالتكامل مع مدير الحزم فإن مشروع دبيان سهّل للمستخدم العادي استخدام وتثبيت لينكس.</p><h2 dir="rtl">Ubuntu</h2><p dir="rtl">عندما أطلقت شركة Canonical في أكتوبر 2004 نسختها المعدلة من نظام التشغيل دبيان لم تدرِ أنها ستفتتح بذلك صفحة واحدة من أكثر توزيعات لينكس شعبية على الإطلاق، ويعود ذلك بفضل تركيز فريق العمل الخاص بالتوزيعة على تحقيق المزيد من سهولة تثبيت وإدارة توزيعة لينكس، مع الأخذ بعين الاعتبار عدم تضمينها أية برمجيات محتكرة.</p><p dir="rtl">تأتي Ubuntu مع مثبّت رسومي أكثر بساطة، إضافة إلى حزم أوسع من البرامج المثبتة مسبقًا، إضافة إلى أداة رسومية لإدارة تعاريف العتاد الصلب، وإدارة المحليات (لغة الواجهة)، علاوةً على مركز البرمجيات الخاص بهم والذي يجعل من تثبيت وحذف البرامج ممكنًا بنقرة واحدة. منذ اصدار أكتوبر 2012 اعتمد فريق أوبونتو على الواجهة الرسومية Unity الخاصة بهم.</p><p dir="rtl">تعقد Canonical المالكة لـ Ubuntu صفقات تجارية مع شركات مثل أمازون، مما يسبب لها انتقادات واسعة في مجتمع البرمجيات الحرّة والذي يرفض إرسالها بعض بيانات المستخدمين للشركات المعلنة بهدف تحقيق الربح، رغم إمكانية تعطيل ذلك.</p><h2 dir="rtl">Mint</h2><p dir="rtl">خلال أقل من شهر على إنطلاق أوبونتو في 2006 قام فريق من المتطوعين بإنشاء نسختهم الخاصة بناء عليها، بهدف تقديم توزيعة أكثر أناقة وسهولة في الإستخدام، وأكثر استقرارًا في نفس الوقت، وإن جاء ذلك على حساب تضمين التوزيعة برمجيات محتكرة بشكل افتراضي مثل مشغلات الصوت والفيديو وخطوط مايكروسوفت. (يقول مطورو Mint بأن مستخدمي سائر التوزيعات يستخدمون هذه الأجزاء، فلمَ لا نجهزها لهم). تأتي مِنت كذلك مع كم أكبر من البرامج بحيث تغني المستخدم عن تثبيت أي شيء إضافي تقريبًا، وتعتمد على مستودعات Ubuntu.</p><p dir="rtl">لاحقًا عمل فريق التطوير على إعادة كتابة عدد من الأدوات الموجودة في Ubuntu مثل مدير البرمجيات، مدير التحديثات، أداة النسخ الاحتياطي، أداة الرفع Upload وغيرها. إضافة إلى عملهم على تطوير واجهتين مشتقتين من غنوم Gnome وهما Cinnamon و Mate.</p><h2 dir="rtl">فيدورا Fedora</h2><p dir="rtl">في 2003 رعت شركة RedHat إندماج مشروعين أحدهما نسخة المستخدم العادي الذي كانت RedHat نفسها تعمل على إصدارها، والثاني مشروع نظام فيدورا، لينتج مشروع فيدورا، وهو نسخة من نظام التشغيل غنو لينكس، تستخدم تحزيم .rpm للحزم والبرامج، وتحظى بدعم غير رسمي من شركة RedHat حيث25% من موظفي مشروع فيدورا هم من موظفي RedHat.</p><p dir="rtl">تلتزم فيدروا بفلسفة غنو لينكس حيث لا تضمن برمجيات مغلقة بشكل مسبق معها، وإن كانت مضمنة في مستودعاتها والتي تحتوي على برمجيات أقل عددًا من تلك الموجودة في دبيان وبناتها.</p><h2 dir="rtl">OpenSUSE</h2><p dir="rtl">في عام 2004 قررت شركة Novell الألمانية إيقاف مشروع SUSE Linux مغلق المصدر وتحويله إلى توزيعة OpenSUSE مفتوحة المصدر، لتطلق إصدارتها الأولى في تشرين الأول 2005.</p><p dir="rtl">يستخدم المشروع نظام RedHat في توزيع الحزم RPM، ويهتم بتسهيل تجربة المستخدم النهائي في إدارة نظام لينكس، لا سيما من خلال مركز تحكم YaST الذي يقدم مجموعة كبيرة من الأدوات لإنجاز مختلف العمليات الإدارية في لينكس في مكانٍ واحد ومن خلال الواجهة الرسومية.</p><h2 dir="rtl">Archlinux</h2><p dir="rtl">تهدف Arch إلى تقديم توزيعة مرنة كفاية ليتمكن المستخدمون من تشكيلها بالأسلوب الذي يناسب إحتياجاتهم ومتطلباتهم المختلفة، إضافةً للمرونة تركّز Arch على مفاهيم أخرى (لا تهتم بها معظم توزيعات لينكس) مثل الخفة، حيث التركيب المبدئي لا يشمل سوى الحزم الأساسية جدًا، وبدون أية واجهة مرئية، الإختزالية والتي تعني أقل حد ممكن من متطلبات العتاد الصلب والاعتماديات البرمجية، إضافة لأناقة الكود.</p><p dir="rtl">تركيب Arch يتم من خلال سطر الأوامر، وإعدادها يكون بتحرير ملفات نصيّة وتعديل بعض القيم فيها، يمكن متابعة استخدامها على هذا المنوال، أو تركيب واجهة رسومية. تعتبر Arch توزيعة متدحرجة، بمعنى أنها لا تقوم بإصدار نسخ جديدة منها خلافًا لباقي التوزيعات، بل يعمل المستخدم على تركيبها ومن ثم دحرجتها، أي تحديثها باستمرار من خلال مدير الحزم.</p><p dir="rtl">تستخدم Arch أسلوب تحزيم tgz وهو أكثر الأساليب بساطة، ويدار باستخدام مدير pacman، كما يعتمد مستخدموها على بناء الحزم من المصدر (src) من خلال مستودع المجتمع aur، بهدف الحصول على البرمجيات غير الموجودة في المستودعات الرسمية.</p><p dir="rtl">إلى جانب التعدد الكبير في تجميعات غنو لينكس، هناك تعدد أقل عددًا وأكثر أهمية يواجه القادم الجديد وهو اختيار بيئة العمل Desktop Environment والذي يقصد به الحزم البرمجية التي تقدم واجهة رسومية في التعامل مع لينكس بدلًا من سطر الأوامر، وخلافًا لما هو الحال عليه من وجود بيئة عمل واحدة لكل من نظامي Windows و OS X، فلدى لينكس ما يزيد عن عشرين واجهة، يعدّ اختيار واحدة منها أمرًا أكثر أهمية وأولوية من اختيار التوزيعة، وهو ما سأوضحه تفصيلًا بعد عرضي ﻷشهر الواجهات:</p><h2 dir="rtl">XFCE</h2><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_05/Xfce4.12.jpg.33d80a9b1f32b45896daa3b9a58f81d6.jpg"><img data-fileid="1932" class="ipsImage ipsImage_thumbnailed" alt="Xfce4.12.thumb.jpg.06e160d6463302f367cf6" src="https://academy.hsoub.com/uploads/monthly_2015_05/Xfce4.12.thumb.jpg.06e160d6463302f367cf62746420c049.jpg"></a></p><p dir="rtl">في عام 1996 أطلق أوليفر فوردان مشروع XFCE (بالاعتماد على مكتبات GTK+) ليكون أقدم مشروع يهدف إلى تزويد المستخدم النهائي ببيئة عمل رسومية متكاملة مضمنة سطح مكتب ومجموعة من التطبيقات الأساسية، تركز Xfce على الخفة والاستقرار إضافةً لإمكانية تخصيصها بسهولة، وهذا ما يجعلها خيارًا ممتازًا للباحثين عن البساطة، المبتدئين، أو لمستخدمي الأجهزة القديمة.</p><h2 dir="rtl">KDE</h2><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_05/kde-desktop_(1).png.477d2d0519932589842c0e7e27cdb06c.png"><img data-fileid="1933" class="ipsImage ipsImage_thumbnailed" alt="kde-desktop_(1).thumb.png.54fb5e1fc06018" src="https://academy.hsoub.com/uploads/monthly_2015_05/kde-desktop_(1).thumb.png.54fb5e1fc06018533e159973a4262163.png"></a></p><p dir="rtl">في وقت آخر من عام 1996 كان فريق KDE مشغولًا بكتابة وتصميم بيئة العمل الخاصة بهم والتي صدرت بعد ذلك بعامين لتشمل سطح المكتب وباقة كاملة من التطبيقات، بالاعتماد على مكتبات Qt البرمجية، تركز البيئة على تقديم بصمة بصرية جذابة وتأثيرات أنيقة للغاية، وتهتم بتقديم إمكانية تعديل حتى أدق تفاصيل مظهرها وسلوكها لتناسب أذواق المستخدمين، وهي بذلك موجهة لهذه الشريحة التي تهتم بالمظهر والتخصيص.</p><h2 dir="rtl">Gnome</h2><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_05/gnome.png.ca81abe4c352c0cd55706fdf9de323be.png"><img data-fileid="1931" class="ipsImage ipsImage_thumbnailed" alt="gnome.thumb.png.ef83bd1007c796f2fca6dc83" src="https://academy.hsoub.com/uploads/monthly_2015_05/gnome.thumb.png.ef83bd1007c796f2fca6dc8385fc1466.png"></a></p><p dir="rtl">هي بيئة سطح المكتب التي عمل فريق غنوGNU على تصميمها أثناء عملهم في كتابة أدوات النظام، وذلك باعتبار مكتبات Qt المستخدمة في مشروع كدي لم تكن مرخصة بشكل حرّ آنذاك، مما أقلق فريق عمل غنو، فباشروا عملهم بكتابة مكتبات GTK+ وبناء Gnome عليها، ورغم أن مكتبات Qt رُخصت لاحقًا بشكل حرّ (في عام 2000) إلا أن المشروع بقي مستمرًا ومحققا لنجاح كبير. تركز Gnome على كونها أكثر بساطة وسهولة في السلوك والإعداد.</p><p dir="rtl">في عام 2011 تم إعادة تصميم الواجهة بالكامل مع إطلاق إصدارها الثالث، وهدف التصميم الجديد لإلغاء الطبقات التقليدية (شريط مع قائمة) والتركيز أكثر على تجربة الاستخدام من خلال شاشات اللمس، الأمر الذي لم يلقَ ترحيبًا كبيرًا، مما أدى لظهور مشروعين مشتقين من Gnome:</p><p dir="rtl">Mate وهو عبارة عن استمرار لواجهة Gnome 2 التقليدية، للعمل على تزوديها بترقيعات الأمان وإضافة ميزات جديدة.</p><p dir="rtl">Cinnamon وهي استثمار في Gnome 3 والاستفادة من امكانياتها الجديدة لكن مع المحافظة على الأسلوب التقليدي في تصميم سطح المكتب، وهي تجمع بين الخفّة والمظهر الجذاب.</p><h2 dir="rtl">Unity</h2><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_05/unity.png.313441872cd94cabe6c856187f47bdcc.png"><img data-fileid="1934" class="ipsImage ipsImage_thumbnailed" alt="unity.thumb.png.174a37a0bc2fd72ba39b66dd" src="https://academy.hsoub.com/uploads/monthly_2015_05/unity.thumb.png.174a37a0bc2fd72ba39b66dd7b074c35.png"></a></p><p dir="rtl">رغم حداثة عمرها (4 سنوات) إلا أن Unity حققت إنتشارًا واسعًا، وهي ليست بيئة عمل بمعنى الكلمة وإنما سطح مكتب لبيئة Gnome يهدف إلى استغلال المساحة بشكل أفضل للشاشات الصغيرة كدمج شريط القوائم بالشريط العلوي، وتتيح Unity إمكانية أفضل لمحبي استخدام لوحة المفاتيح، كمطلق Dash والذي يسهل الوصول إلى البرامج والملفات من خلال كتابة الأحرف الأولى منها، وكذلك ميزة HUD والتي تتيح البحث في قوائم البرامج لتنفيذ الأوامر المختلفة بدون الحاجة لاستخدام الفأرة.</p><p dir="rtl">وخلافًا لباقي واجهات غنو لينكس فلا يمكن استخدام Unity سوى مع Ubuntu، بعض محاولات تشغيلها على توزيعات أخرى لا يمكن اعتبارها ناجحة بعد.</p><p dir="rtl">لدينا كذلك مشروع LXDE المكتوب وفق GTK وهو يقدم واجهة بالحدّ الأدنى من الاعتماديات مما يجعلها أكثر بيئات سطح المكتب خفّة.</p><p dir="rtl">وهناك مشروع Pantheon الوليد والذي يعمل فريق توزيعة elementaryOS على تطويره كسطح مكتب بديل لبيئة عمل Gnome 3.</p><p dir="rtl"><strong>حسنًا، ماذا بعد؟</strong></p><p dir="rtl">بعد سنوات من تجريبي للتوزيعات المذكورة وغيرها وفق معظم بيئات سطح العمل، وصلتُ أخيرًا إلى ما يمكن تسميته بالقاعدة الذهبية، ورغم بساطتها فهي "تعمل" ويمكنني القول بأنه يمكن للمبتدى أن يثق بها وأنها يضعها موضع التجريب والاختبار؛ باختصار لا تهتم باسم التوزيعة التي تستخدمها، انسَ موضوع الإسم والميزات وتابعني قليلًا:</p><h2 dir="rtl">عشرة نقاط، ونقطة</h2><p dir="rtl">1 - باستثناء ما إذا كان لديك غرضٌ خاص، فلا تستخدم سوى التوزيعات عامة الأغراض، على سبيل المثال تعتبر Kali Linux توزيعة موجهة ﻷغراض الحماية والإختراق وليس للمستخدم العادي أو المبتدئ، كذلك الأمر مع التوزيعات الموجهة لأغراض الميديا أو سواها.</p><p dir="rtl">2 - لا تستخدم توزيعة لم تعدّ تطوّر أو توزيعة بُدئ تطويرها للتوّ، فتلك التي لم تعد تطوّر قد تحتوي على مشاكل أمنية أو علل برمجية غير محلولة، وأما التوزيعات التي بدُئ تطويرها للتوّ (بمعنى أن عمرها لم يتجاوز عامين أو ثلاثة) فهي لا تزال تفتقر للدعم الكبير ومن الصعوبة أن تجد من يساعدك في حلّ مشاكلها، إضافةً لعدم ضمان توقف تطويرها خلال وقتٍ قصير بعد أن تكون صرفت عليها وقتًا طويلًا في التثبيت والتعلم.</p><p dir="rtl">3 - استخدم واحدة من التوزيعات الكبيرة، تعلمها وابق معها، هذا هو سرّ نجاح تجربتك مع غنو لينكس وتمكنك من الانتقال النهائي إليه. لقد بقيتُ أستخدم Ubuntu لأربع سنوات متتالية قبل أن أنتقل لتجريب باقي التوزيعات والواجهات، وهذا ما أتاح لي الوقت لفهم لينكس ووفر عليّ الكثير من التشتت الذي لا يناسب المبتدئ.</p><p dir="rtl">4 - أقصد بالتوزيعات الكبيرة مثل التي سبق ذكرها إضافة لتوزيعات تجاوزت العشر سنوات مثل CentOS PCLinuxOS، Slackware وغيرها.</p><p dir="rtl">5 - توزيعات لينكس إما مبنية على تقنيات معينة أو لتحقيق أهداف وقيم ما، فالسهولة التي تريح فيها Mint المستخدم النهائي عن إعداد نظامه تكون على حساب الخفّة أحيانًا، والخفة والمرونة التي تقدمها Arch تكون على حساب السهولة، وهكذا.</p><p dir="rtl">6 - ورغم اختلاف الأهداف إلا أن الأمر ليس على إطلاقه إذ نتحدث هنا عن مجتمع حرّ فأية فكرة تصدر من أي فريق تعمم على الباقي، في معظم نقاشات «أيها أفضل» ستجد من يتغنى بأمجاد دبيان، أو من يذكر أن فريق فيدورا من أكثر الفرق البرمجية مساهمة في تطوير المشاريع مفتوحة المصدر، إلا أن ذلك لا يغيّر شيئًا في تجربة المستخدم النهائي، فكل ما بذله فريق دبيان (مثلا) لتسهيل عملية تركيب لينكس وإدارة الحزم بات موجودًا على جميع التوزيعات، والمساهمات التي يقدمها فريق فيدورا للبرمجيات الحرّة توزّع على باقي التنويعات أيضًا، لذا انتبه من مثل هذه الأفكار التي يُستشهد بها في نقاشات «أيها أفضل» فهي لن تغيّر شيئًا من تجربتك كمستخدم سطح مكتب.</p><p dir="rtl">7 - القاعدة الذهبية: الواجهة المرئية مع مدير الحزم هما ما يشكل أكثر من 80% من تجربة المستخدم النهائي، والباقي تفاصيل قد لا تفضّل أن تصدّع رأسك بها، حسب هذه النظرية فإن Fedora KDE أو OpenSUSE KDE يعني مقارنات لا طائل منها. Mint Xfce أو Xubuntu يعني اختلافات لا تكاد تذكر.</p><p dir="rtl">تجربة المستخدم النهائي تتعلق بالواجهة المرئية أولًا، ونوع مدير الحزم ثانيًا، وعلى هذا يجب أن يدور الحديث.</p><p dir="rtl">8 - مدير الحزم يرتبط بالأسلوب والمعايير التي تتبعها كل توزيعة في تحزيم برامجها مما ينعكس على استقرار البرامج، حجمها، وسرعة وصول التحديثات، وكم الحزم المتوفرة لها، على سبيل المثال تفوق عدد الحزم المتوفرة في مستودعات دبيان deb تلك الموجودة في مستودعات فيدورا، بينما يتفوق مدير حزم Arch بسرعة وصول تحديثات البرامج إليه أولًا بأول. رغم ذلك فلا يجب أن تهتم كثيرًا بهذه النقطة، فالحزم غير المتوفرة على هيئة rpm لن تكون شائعة الاستخدام بالتأكيد.</p><p dir="rtl">9 - اختر الواجهة المرئية التي ترجّح أنها تناسبك، ثم أعطها وقتها في التجريب وطالما كانت مناسبة فلا تفكّر بتجريب غيرها قبل عدة أشهر.</p><p dir="rtl">10 - المشاكل، الانهيارات والعلل، موجودة أينما ذهبت في أي نظام تشغيل، وتحت أي توزيعة، وباستخدام أية واجهة، في الحقيقة ونظرًا لخبرتي فإن معظم ما نصفه بالمشاكل تأتي من قلة المعرفة والخبرة في إدارة النظام.</p><p dir="rtl">11 - عندما تفكّر بالانتقال إلى لينكس اعلم أنك تحتاج إلى القراءة الطويلة والمعمقة لمعرفة استخدامه، هذا النوع من القراءة قد يكلفك شهرًا أو اثنين تبعًا لوقت فراغك، لكنه سيريحك تمامًا على المدى البعيد، بينما سيسبب الاكتفاء بمواضيع المنتديات والتدوينات السطحية ونصائح من هنا وهناك ارهاقًا ومشاكل كثيرة على المدى الطويل.</p><p dir="rtl">الواجهات في كلمات:</p><ul dir="rtl"><li>KDE: تصميم بصري جذاب، قدرة هائلة على التخصيص، أكثر الواجهات تطلبًا للموارد.</li><li>Gnome: تصميم غير تقليدي، تجربة أفضل لشاشات اللمس، بساطة في الإعدادات.</li><li>XFCE: تصميم تقليدي، واجهة خفيفة للأجهزة القديمة، لكنها لا تزال تدعم التأثيرات البصرية والتخصيص العالي.</li><li>LXDE: تصميم تقليدي، أخف واجهة يمكن استخدامها للأجهزة الأكثر قدمًا، امكانية تخصيص متوسطة.</li><li>Unity: تصميم غير تقليدي، قدرة تخصيص متوسطة، ملاحظات على الأداء ومراعاة الخصوصية من قبل المجتمع، لا يمكن استخدامها سوى مع Ubuntu.</li></ul><p dir="rtl">تذكّر أخيرًا، أن ما يهمك كمستخدم سطح مكتب هو سطح المكتب ببساطة! أشياء مثل اسم التوزيعة، تاريخها، أمجادها، البرامج المبدئية، وسواها هي أشياء تصلح للنقاش في عطلة نهاية الأسبوع لا أكثر.</p>
]]></description><guid isPermaLink="false">48</guid><pubDate>Sun, 10 May 2015 22:40:00 +0000</pubDate></item><item><title>&#x645;&#x642;&#x62F;&#x645;&#x629; &#x625;&#x644;&#x649; &#x625;&#x639;&#x627;&#x62F;&#x629; &#x62A;&#x648;&#x62C;&#x64A;&#x647; &#x627;&#x644;&#x625;&#x62F;&#x62E;&#x627;&#x644;/&#x627;&#x644;&#x625;&#x62E;&#x631;&#x627;&#x62C;  (I/O) &#x641;&#x64A; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A5%D8%B9%D8%A7%D8%AF%D8%A9-%D8%AA%D9%88%D8%AC%D9%8A%D9%87-%D8%A7%D9%84%D8%A5%D8%AF%D8%AE%D8%A7%D9%84%D8%A7%D9%84%D8%A5%D8%AE%D8%B1%D8%A7%D8%AC-io-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r39/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_05/io_redirection.png.3ba4542aa8ddc992a56c7985597fbc2b.png" /></p>

<p dir="rtl">
	قدرات إعادة التوجيه (redirection) في لينكس توفّر لك العديد من الأدوات القوية التي يُمكن استخدامها لجعل جميع أنواع المهام أسهل للتنفيذ. سواءٌ كنتَ تكتبُ برمجياتٍ معقّدة أو كنتَ تقوم بإدارة الملفّات عبر سطر الأوامر، فإنّ معرفة كيفية التلاعب بتدفّقات (streams) الإدخال/الإخراج (input/output) على بيئتك الشخصية سيزيدُ من إنتاجيّتك بشكلٍ ملحوظ.
</p>

<h2 dir="rtl">
	التدفقات
</h2>

<p dir="rtl">
	يتم توزيع الإدخال والإخراج في بيئة لينكس عبر ثلاث تدفّقات (streams) أساسية:
</p>

<ul dir="rtl">
<li>
		إدخال معياري (stdin).
	</li>
	<li>
		إخراج معياري (stdout).
	</li>
	<li>
		خطأ معياري (stderr).
	</li>
</ul>
<p dir="rtl">
	هذه التدفّقات أيضًا مرقّمة وفق التالي:
</p>

<ul dir="rtl">
<li>
		(stdin (0.
	</li>
	<li>
		(stdout (1.
	</li>
	<li>
		(stderr (2.
	</li>
</ul>
<p dir="rtl">
	أثناء التفاعلات المعيارية (standard interactions) بين المستخدم والطرفيّة (terminal)، فإنّه يتم نقل الإدخال المعياري عبر لوحة مفاتيح المستخدم. يتم عرض الإدخال المعياري و الخطأ المعياري على طرفية المستخدم كنصّ. بشكلٍ عام، جميع هذه التدفّقات الثلاثة يتم الإشارة إليها بـ"<strong>التدفّقات المعيارية</strong>".
</p>

<h2>
	الإدخال المعياري
</h2>

<p dir="rtl">
	تدفّق الإدخال المعياري عادةً ما يحمل البيانات من المستخدم إلى البرنامج. البرامج التي تتوقع إدخالًا معيّنًا من المستخدم تستقبل الإدخال عادةً من جهازٍ ما، مثل لوحة المفاتيح، الإدخال المعياري ينتهي عند وصوله نهاية الملف (<span style="font-family:courier new,courier,monospace;"><strong>EOF</strong></span> – End Of File). كما يتم وصفه بواسطة اسمه، فإنّ نهاية الملف أو "<span style="font-family:courier new,courier,monospace;"><strong>EOF</strong></span>" تُعلِم الحاسوب أنه لا يوجد هناك المزيد من البيانات ليتم قراءتُها.
</p>

<p dir="rtl">
	لرؤية الإدخال المعياري بصورةٍ حيّةَ، شغّل برنامج cat. كلمة Cat ترمز لـ"concatenate” أو "سَلسَلة الأشياء"، والتي تعني ربط الأشياء مع بعضها البعض على شكل سلسلة. يتم استخدام Cat بشكلٍ شائع لدمج محتويات ملفّّين. عندما يتم تشغيله لوحده فإنّ cat يقوم بفتح طرفيّته الخاصّة.
</p>

<pre class="javascript ipsCode prettyprint" data-pbcklang="javascript" data-pbcktabsize="4">
cat</pre>

<p dir="rtl">
	بعد فتح <span style="font-family:courier new,courier,monospace;"><strong>cat</strong></span>، قم بإدخال مجموعة من الأرقام كالتالي:
</p>

<pre class="javascript ipsCode prettyprint" data-pbcklang="javascript" data-pbcktabsize="4">
1
2
3</pre>

<p dir="rtl">
	ثم اضغط <span style="font-family:courier new,courier,monospace;">Ctrl+D</span>. عندما تقوم بكتابة رقم والضغط على زرّ <span style="font-family:courier new,courier,monospace;">Enter</span>، فإنّك تقوم بإرسال إدخال معياري (standard input) إلى برنامج <span style="font-family:courier new,courier,monospace;">cat</span> الذي يعمل حاليًا، والذي هو بدوره يتوقّع وصول الإدخال إليه. يقوم برنامج <span style="font-family:courier new,courier,monospace;">cat</span> بإرسال الإدخال الذي تُدخله إليه مرةً أخرى إلى الطرفية حيث يتم عرضه كإخراج معياري (standard output).
</p>

<p dir="rtl">
	إشارة <span style="font-family:courier new,courier,monospace;">EOF</span> (أو نهاية مدّة حياة العملية الحالية – End of File) يُمكن أن يتم إرسالها إلى البرنامج بواسطة المستخدم عبر الضغط على مفاتحيّ <span style="font-family:courier new,courier,monospace;">Ctrl+D</span>. بعد أن يتسلّم برنامج <span style="font-family:courier new,courier,monospace;">cat</span> إشارة <span style="font-family:courier new,courier,monospace;">EOF</span> فإنّ البرنامج يتوقف.
</p>

<h2>
	الإخراج المعياري
</h2>

<p dir="rtl">
	يقوم الإخراج المعياري (standard output) بكتابة البيانات التي يتم إنشاءها بواسطة البرامج. عندما لا يتم إعادة توجيه تدفّق الإخراج المعياري، فإنّه سيتم إخراج النصّ إلى الطرفية. جرّب المثال التالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="" dir="rtl">
echo Sent to the terminal through standard output</pre>

<h2>
	الخطأ المعياري
</h2>

<p dir="rtl">
	يقوم الخطأ المعياري (standard error) بكتابة الأخطاء التي يتم إنشاؤها بواسطة البرامج التي فشلت في أن يتم تنفيذها في مرحلةٍ ما. تمامًا مثل الإدخال المعياري فإنّ الوجهة الافتراضية لهذا التدفّق هي شاشة الطرفيّة.
</p>

<p dir="rtl">
	عندما يتم إرسال تدفّقِ خَطَأٍ معياريٍ لبرنامجٍ إلى برنامجٍ آخر، فإنّ البيانات المُرسلة (المتكوّنة من أخطاء البرنامج) يتم إرسالها بشكلٍ موازي إلى الطرفية كذلك.
</p>

<p dir="rtl">
	فلنرى مثالًا بسيطًا عن الخطأ المعياري باستخدام <span style="font-family:courier new,courier,monospace;"><strong>ls</strong></span>. يقوم الأمر <span style="font-family:courier new,courier,monospace;"><strong>ls</strong></span> بسرد محتويات المجلّدات أو المسارات.
</p>

<p dir="rtl">
	عندما يتم تنفيذه بدون أيّ معطيات، فإنَّ أمر ls يقوم بسرد محتويات المسار الحالي. إذا تمّ تشغيله مع مسارٍ معيّن كمُعطَى، فإنّه سيقوم بسرد محتويات المسار المطلوب.
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
ls %</pre>

<p dir="rtl">
	بما أنّ <span style="font-family:courier new,courier,monospace;"><strong>%</strong></span> ليس مسارًا موجودًا، فإنّه سيتم إرسال النصّ التالي كخطأٍ معياري:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
ls: cannot access %: No such file or directory</pre>

<h2>
	إعادة توجيه التدفق
</h2>

<p dir="rtl">
	يمتلك نظام لينكس أوامرًا مُضمّنة لإعادة توجيه كلّ تدفّق. تقوم هذه الأوامر بطباعة إخراجٍ معياري إلى ملفٍّ ما. إذا تم استهداف ملفٍّ غير موجود، فإنّه سيتم إنشاء ملفٍّ جديد باسم ذاك الملفّ ليتم الكتابة عليه.
</p>

<p dir="rtl">
	الأوامر التي يأتي معها قوسٌ واحد (إشارة <span style="font-family:courier new,courier,monospace;"><strong>&gt;</strong></span>) تقوم بالكتابة فوق ملفّ الوجهة الموجود. بالأسفل تجد بعض الإشارات الشائع استخدامها مع الأوامر عند التعامل معها بالطرفية لإعادة توجيه التدفّقات:
</p>

<h3 dir="rtl">
	1. الكتابة فوق الملفات
</h3>

<ul dir="rtl">
<li>
		<span style="font-family:courier new,courier,monospace;"><strong>&gt;</strong></span> إخراج معياري.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;"><strong>&lt;</strong></span> إدخال معياري.
	</li>
	<li>
		<strong><span style="font-family:courier new,courier,monospace;">2&gt;</span></strong> خطأ معياري.
	</li>
</ul>
<h3 dir="rtl">
	2. الإضافة إلى الملفات
</h3>

<p dir="rtl">
	الأوامر التي يتم استخدامها مع قوسين اثنين لا تقوم بالكتابة فوق الملفّّات، بل تقوم بالكتابة إلى نهاية الملفّّات:
</p>

<ul>
<li>
		<span style="font-family:courier new,courier,monospace;"><strong>&gt;&gt;</strong></span> إخراج معياري.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;"><strong>&lt;&lt;</strong></span> إدخال معياري.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;"><strong>2&gt;&gt;</strong></span> خطأ معياري.
	</li>
</ul>
<p dir="rtl">
	فلنأخذ المثال التالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="" dir="rtl">
$ cat &gt; write_to_me.txt
a
b
c
&gt; ctrl-d</pre>

<p dir="rtl">
	يتم استخدام <strong><span style="font-family:courier new,courier,monospace;">cat</span></strong> هنا لتتم عملية الكتابة إلى أحد الملفّّات، والذي يتم إنشاؤه تلقائيًا بسبب عدم وجوده ولأن الأمر الأول يحتاجه.
</p>

<p dir="rtl">
	لطباعة محتويات الملفّ <span style="font-family:courier new,courier,monospace;">write_to_me.txt</span> باستخدام <span style="font-family:courier new,courier,monospace;">cat</span>:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="" dir="rtl">
$ cat write_to_me.txt</pre>

<p dir="rtl">
	يجب أن ترى أنّ الملفّ يحتوي على التالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
a
b
c</pre>

<p dir="rtl">
	الآن قم بإعادة توجيه <span style="font-family:courier new,courier,monospace;">cat</span> إلى<span style="font-family:courier new,courier,monospace;"> write_to_me.txt</span> مجددًا وقم بإدخال الأرقام التالية:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="" dir="rtl">
$ cat &gt; write_to_me.txt
1
2
3
&gt; ctrl-d</pre>

<p dir="rtl">
	عندما تستعمل <span style="font-family:courier new,courier,monospace;">cat</span> لعرض محتويات <span style="font-family:courier new,courier,monospace;">write_to_me.txt</span>، يجب أن ترى التالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
1
2
3</pre>

<p dir="rtl">
	أخيرًا، قم بعمل إعادة توجيه أخرى لـ <span style="font-family:courier new,courier,monospace;">cat</span> ولكن هذه المرّة باستخدام قوسين عوضًا عن قوسٍ واحد:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="" dir="rtl">
cat &gt;&gt; write_to_me.txt
a
b
c
ctrl-d</pre>

<p dir="rtl">
	وافتح ملفّ <span style="font-family:courier new,courier,monospace;">write_to_me.txt </span>مجددًا، وسترى التالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
1
2
3
a
b
c</pre>

<p dir="rtl">
	يحتوي الملفّّ الآن على النصّ من المرّة الأخيرة لاستخدام الأمر cat والتي قبلها، لأنّ الثانية لم تقم بالكتابة فوق الأولى.
</p>

<h2>
	الأنابيب
</h2>

<p dir="rtl">
	يتم استخدام الأنابيب (Pipes) لإعادة توجيه تدفّقٍ من برنامجٍ إلى آخر. عندما يتم إرسال الإخراج المعياري الخاص بأحد البرامج إلى برنامجٍ آخر عبر أنبوب (pipe) فإنّ بيانات البرنامج الأول والتي تمّ تلقّيها من طرف البرنامج الثاني سوف لن تظهر في الطرفية. فقط البيانات المُرشّحة عبر البرنامج الثاني سوف يتم عرضها.
</p>

<p dir="rtl">
	الأنبوب في نظام لينكس يتم تمثيله بإشارة شريطٍ عمودي:
</p>

<pre class="javascript ipsCode prettyprint" data-pbcklang="javascript" data-pbcktabsize="4">
*|*</pre>

<p dir="rtl">
	وكمثالٍ على أمرٍ يستخدم أنبوبًا:
</p>

<pre class="javascript ipsCode prettyprint" data-pbcklang="javascript" data-pbcktabsize="4">
ls | less</pre>

<p dir="rtl">
	هذا الأمر يقوم بأخذ ناتج الأمر <span style="font-family:courier new,courier,monospace;"><strong>ls</strong></span> (والذي يقوم بعرض محتويات المسار الحالي الذي أنت فيه) ويقوم بتمريره عبر أنبوبٍ إلى برنامج <strong><span style="font-family:courier new,courier,monospace;">less</span></strong>. يقوم <span style="font-family:courier new,courier,monospace;"><strong>less</strong></span> بعرض البيانات المُرسلة إليه سطرًا سطرًا بدلًا من عرضها كاملة.
</p>

<p dir="rtl">
	بشكلٍ عام، يقوم <span style="font-family:courier new,courier,monospace;">ls</span> بعرض محتويات المسار المطلوب عبر عرض الخرج بأكمله دفعةً واحدة. عندما تقوم بتشغيل <span style="font-family:courier new,courier,monospace;">ls</span> عبر <span style="font-family:courier new,courier,monospace;">less</span> فإنّ كلّ مُدخَلة يتم عرضها في سطرٍ واحد فقط خاصٍ بها ولا يتم عرض الخرج كله دفعةً واحدة، بل واحدة واحدة.
</p>

<p dir="rtl">
	على الرغم من أنّ وظيفة الأنابيب قد تبدو مشابهةً لإشارات الأقوس <span style="font-family:courier new,courier,monospace;">&lt;</span> و <span style="font-family:courier new,courier,monospace;">&lt;&lt;</span> (إعادة توجيه الإخراج المعياري)، فإنّ الفرق هو أنّ الأنابيب تقوم بتوجيه الخرج من أمرٍ إلى آخر، بينما تقوم إشارات الأقواس مثل <span style="font-family:courier new,courier,monospace;">&lt;</span> و <span style="font-family:courier new,courier,monospace;">&lt;&lt;</span> بتوجيه الخرج حصرًا إلى الملفّات فقط.
</p>

<h2>
	المرشحات
</h2>

<p dir="rtl">
	المرشّحات (filters) هي عبارة عن أوامر تعدّل على أنابيب إعادة التوجيه والإخراج. لاحظ أيضًا أنّه يمكن استخدام أوامر المرشّحات وأوامر لينكس العادية دون الحاجة لاستخدام الأنابيب.
</p>

<ul dir="rtl">
<li>
		<span style="font-family:courier new,courier,monospace;"><strong>find</strong></span>: يقوم برنامج <span style="font-family:courier new,courier,monospace;">find</span> بعرض الملفّات التي يتطابق اسمها مع المعطيات المُمررة له.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;"><strong>grep: </strong></span>يقوم برنامج <span style="font-family:courier new,courier,monospace;">grep</span> بعرض النصّ الذي يتطابق مع النصّ المُمرر إليه.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;"><strong>tee: </strong></span>مهمّة برنامج <span style="font-family:courier new,courier,monospace;">tee</span> هي إعادة توجيه الإدخال المعياري إلى كلٍ من الإخراج المعياري وملفٍّ واحد أو أكثر.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;"><strong>tr: </strong></span>يقوم برنامج <span style="font-family:courier new,courier,monospace;">tr</span> بالبحث عن سلسلة (<span style="font-family:courier new,courier,monospace;">string</span>) واستبدالها بواحدة أخرى.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;"><strong>wc: </strong></span>عدّاد للمحارف، السطور والكلمات.
	</li>
</ul>
<h2>
	أمثلة
</h2>

<p dir="rtl">
	قد تعرّفت الآن على إعادة التوجيه، استخدام الأنابيب والمرشّحات الأساسية، فلنلقي نظرةً على بعض أنماط إعادة التوجيه الأساسية والأمثلة.
</p>

<h3 data-pbcklang="css" data-pbcktabsize="4">
	الأمر &gt; الملف
</h3>

<p dir="rtl">
	يقوم هذا النمط بإعادة توجيه ناتج أمرٍ معين إلى ملفّ، مثال:
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
ls ~ &gt; root_dir_contents.txt</pre>

<p dir="rtl">
	سيقوم الأمر السابق بتمرير محتويات مجلد الجذر (root directory) وكتابتها إلى ملفٍّ يدعى <span style="font-family:courier new,courier,monospace;">root_dir_contents.txt</span>. سيقوم أيضًا بالكتابة فوق أيّ بيانات موجودة في ذاك الملفّ كوننا نستخدم قوسًا واحدًا فقط (<span style="font-family:courier new,courier,monospace;"><strong>&gt;</strong></span>).
</p>

<h3 data-pbcklang="css" data-pbcktabsize="4">
	الأمر &gt; dev/null/
</h3>

<p dir="rtl">
	<span style="font-family:courier new,courier,monospace;">dev/null/</span> هو ملفٌّ خاص يتم استعماله لحذف أيّ بياناتٍ يتم توجيهها له. يتم استخدامه للتخلص من الخرج الذي لا نحتاجه والذي يُمكن أن يتعارض أحيانًا مع وظيفة أمرٍ آخر أو سكربت (script). يتم إهمال أي خرجٍ يتم إرساله إلى <span style="font-family:courier new,courier,monospace;">dev/null/</span>. في المستقبل، ربّما تقوم باستخدام إعادة توجيه الخرج الناتج عن الأوامر والأخطاء إلى <span style="font-family:courier new,courier,monospace;">dev/null/</span> عند كتابة سكربتات الشلّ (shell scripts).
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
ls &gt; /dev/null</pre>

<p dir="rtl">
	سيقوم الأمر السابق بإهمال تدفّق الإخراج المعياري (standard output stream) العائد من الأمر <span style="font-family:courier new,courier,monospace;">ls</span> عبر تمريره إلى الملفّ <span style="font-family:courier new,courier,monospace;">dev/null/</span> الذي سيتخلص منه.
</p>

<h3 dir="rtl">
	الأمر 2&gt; الملف
</h3>

<p dir="rtl">
	يقوم هذا النمط بتوجيه تدفّق الخطأ المعياري لأمرٍ ما إلى ملفّ، حيث يقوم بالكتابة فوق محتوياته الموجودة. كمثال:
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
mkdir '' 2&gt; mkdir_log.txt</pre>

<p dir="rtl">
	هذا الأمر سيوجّه رسالة الخطأ الصادرة عن "اسم المسار الخاطئ" ويكتبها إلى ملفّ <span style="font-family:courier new,courier,monospace;">mkdir_log.txt</span>. لاحظ أنّه سوف يتم إرسال رسالة الخطأ أيضًا إلى الطرفية ليتمّ عرضها كنص.
</p>

<h3 dir="rtl">
	الأمر &gt;&gt; الملف
</h3>

<p dir="rtl">
	يقوم هذا النمط بتوجيه ناتج أمرٍ ما إلى ملفّ دون الكتابة فوق محتويات الملفّ الحالية. مثال:
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
echo Written to a new file &gt; data.txt
echo Appended to an existing file's contents &gt;&gt; data.txt</pre>

<p dir="rtl">
	هذان الأمران سيقومان أولًا بالكتابة فوق محتويات <span style="font-family:courier new,courier,monospace;">data.txt</span>، ومن ثمّ سيتم الكتابة أسفل المحتويات الحالية لملفّ <span style="font-family:courier new,courier,monospace;">data.txt</span> بواسطة الأمر الثاني، محتويات الملفّ يجب أن تبدو هكذا:
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
Written to a new file
Appended to an existing file's contents</pre>

<h3 dir="rtl">
	الأمر 2&gt;&gt; الملف
</h3>

<p dir="rtl">
	يقوم النمط السابق بتوجيه تدفّق خطأٍ معياري لأمرٍ ما إلى ملفّ دون الكتابة فوق محتوياته الحالية. هذا النمط مفيد لإنشاء ملفّّات السجل (log files) لبرنامجٍ أو خدمة، حيث أنّه لن يتم محو محتويات الملفّ السابقة في كلِّ مرةٍ يتم الكتابة فيها إلى الملفّ.
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
find '' 2&gt; stderr_log.txt
wc '' 2&gt;&gt; stderr_log.txt</pre>

<p dir="rtl">
	يوجّه الأمر أعلاه رسالة الخطأ الصادرة عن معطىٍ خاطئ للأمر <span style="font-family:courier new,courier,monospace;">find</span> إلى ملفٍّ يُدعى <span style="font-family:courier new,courier,monospace;">stderr_log.txt</span>. ومن ثمّ يقوم بتوجيه رسالة الخطأ الصادرة عن استخدامٍ خاطئ للأمر <span style="font-family:courier new,courier,monospace;">wc</span> إلى نفس الملفّ.
</p>

<h3 dir="rtl">
	الأمر  |  الأمر
</h3>

<p dir="rtl">
	يقوم بتوجيه خَرْجِ الأمر الأول إلى دَخْلِ الأمر الثاني.
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
find /var lib | grep deb</pre>

<p dir="rtl">
	هذا الأمر يبحث عبر مجلّد <span style="font-family:courier new,courier,monospace;">var/</span> ومجلّداته الفرعية عن الملفّات والامتدادات المُطابقة للسلسلة "<span style="font-family:courier new,courier,monospace;">deb</span>"، ويُرجِع مسارات تلك الملفّات مع تمييز الجزء المطابق من أسماء تلك بالملفّات بالسلسلة المبحوث عنها.
</p>

<h3 dir="rtl">
	الأمر  |  tee  الملف
</h3>

<p dir="rtl">
	هذا النمط (والذي يتضمّن أمر <span style="font-family:courier new,courier,monospace;">tee</span>) يقوم بتوجيه ناتج أمرٍ معيّن إلى ملفّ والكتابة فوق محتوياته ومن ثمّ يقوم بعرض الناتج المُوجّه بالطرفية. حيثُ ينشئ ملفًّّا جديدًا في حال كان الملفّ غير موجود.
</p>

<p dir="rtl">
	في سياق هذا النمط، يتم استخدام الأمر <span style="font-family:courier new,courier,monospace;">tee</span> عادةً لعرض ناتج أمرٍ معين بينما يتمّ أيضًا حفظه إلى ملفّ. كمثال:
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
wc /etc/magic | tee magic_count.txt</pre>

<p dir="rtl">
	هذا الأمر يقوم باستخدام الأنابيب لنقل عدد المحارف، السطور والكلمات في ملفّ <span style="font-family:courier new,courier,monospace;">etc/magic/</span> (الذي يتم استخدامه بواسطة صدفة لينكس لتحديد نوع الملفّّات) إلى الأمر <span style="font-family:courier new,courier,monospace;">tee</span>، والذي بدوره يقوم بفصل ناتج الأمر <span style="font-family:courier new,courier,monospace;">wc</span> إلى اتّجاهين، ويقوم بإرساله إلى شاشة الطرفية وملفّ <span style="font-family:courier new,courier,monospace;">magic_counts.txt</span>. بالحديث عن الأمر tee، فتخيّل الحرف T، نهاية هذا الحرف هي البيانات الكاملة، وقمّة هذا الحرف هو البيانات عندما يتم فصلها إلى اتّجاهين (الإخراج المعياري لملفٍّ ما وشاشة الطرفية).
</p>

<h3 dir="rtl">
	أمر  |  أمر  |  أمر &gt;&gt; ملف
</h3>

<p dir="rtl">
	يقوم هذا النمط بتوجيه ناتج الأمر الأوّل وترشيحه عبر الأمرين الثانيين. ومن ثمَّ يقوم بطباعة الناتج إلى ملفّ. مثال:
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="" dir="rtl">
ls ~ | grep *tar | tr e E &gt;&gt; ls_log.txt</pre>

<h2>
	الخاتمة
</h2>

<p dir="rtl">
	تعلّم كيفية استخدام قدرات إعادة التوجيه في لينكس عند التعامل مع الأوامر قد يكون شاقًا قليلًا، ولكنك في طريقك بالفعل لاحتراف هذه المهارات بعد إكمالك لهذا الدليل. الآن وبعد أن شاهدت أساسيات كيفية عمل إعادة التوجيه والأنابيب، فستكون قادرًا على بدء رحلتك إلى عالم برمجة سكربتات الشلّ، والذي يستخدم بشكلٍ شائع غالب البرامج والأنماط المُغطّاة في هذا الدليل.
</p>

<p dir="rtl">
	إذا كنتَ تحبّ الغوص أكثر في الأوامر التي قدّمناها في هذا الدليل، فيُمكنك ذلك باستخدام الأمر <span style="font-family:courier new,courier,monospace;">man command | less</span>. كمثال:
</p>

<pre class="css ipsCode prettyprint" data-pbcklang="css" data-pbcktabsize="4">
man tee | less</pre>

<p dir="rtl">
	هذا الأمر سيُريك قائمةً كاملة بالأوامر المتوفّرة لبرنامج <span style="font-family:courier new,courier,monospace;">tee</span>. يمكنك استخدام هذا النمط لعرض المعلومات وخيارات الاستخدام لأيّ أمرٍ أو برنامج في نظام لينكس.
</p>

<p dir="rtl">
	ترجمة -وبتصرّف- للمقال: <a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-i-o-redirection" rel="external nofollow">An Introduction to Linux I/O Redirection</a> لصاحبه David Collazo.
</p>
]]></description><guid isPermaLink="false">39</guid><pubDate>Fri, 01 May 2015 13:58:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641; &#x62A;&#x633;&#x62A;&#x62E;&#x62F;&#x650;&#x645; SFTP &#x644;&#x646;&#x642;&#x644; &#x627;&#x644;&#x645;&#x644;&#x641;&#x651;&#x627;&#x62A; &#x628;&#x623;&#x645;&#x627;&#x646; &#x625;&#x644;&#x649; &#x62E;&#x627;&#x62F;&#x648;&#x645; &#x628;&#x639;&#x64A;&#x62F;</title><link>https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%90%D9%85-sftp-%D9%84%D9%86%D9%82%D9%84-%D8%A7%D9%84%D9%85%D9%84%D9%81%D9%91%D8%A7%D8%AA-%D8%A8%D8%A3%D9%85%D8%A7%D9%86-%D8%A5%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A8%D8%B9%D9%8A%D8%AF-r30/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_04/sftp_480x300.jpg.6a3a1df88914c3c7dbabc0111b6aa9e2.jpg" /></p>
<h2 id="&#1603;&#1610;&#1601;-&#1578;&#1587;&#1578;&#1582;&#1583;&#1605;-sftp-&#1604;&#1606;&#1602;&#1604;-&#1575;&#1604;&#1605;&#1604;&#1601;&#1575;&#1578;-&#1576;&#1571;&#1605;&#1575;&#1606;-&#1573;&#1604;&#1609;-&#1582;&#1575;&#1583;&#1608;&#1605;-&#1576;&#1593;&#1610;&#1583;">&#1605;&#1575;&#1607;&#1608; SFTP&#1567;</h2><p>&#1576;&#1585;&#1608;&#1578;&#1608;&#1603;&#1608;&#1604; &#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; File Transfer Protocol &#1575;&#1604;&#1605;&#1593;&#1585;&#1608;&#1601; &#1575;&#1582;&#1578;&#1589;&#1575;&#1585;&#1611;&#1575; &#1576;&#1600;FTP &#1607;&#1608; &#1591;&#1585;&#1610;&#1602;&#1577; &#1588;&#1575;&#1574;&#1593;&#1577; &#1604;&#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1576;&#1610;&#1606; &#1606;&#1592;&#1575;&#1605;&#1614;&#1610;&#1618;&#1606; &#1605;&#1578;&#1576;&#1575;&#1593;&#1583;&#1614;&#1610;&#1618;&#1606;.<br>&#1571;&#1605;&#1617;&#1575; &#1576;&#1585;&#1608;&#1578;&#1608;&#1603;&#1608;&#1604; &#1575;&#1604;&#1606;&#1617;&#1602;&#1604; &#1575;&#1604;&#1570;&#1605;&#1606; &#1604;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; SFTP (&#1575;&#1582;&#1578;&#1589;&#1575;&#1585; &#1604;&#1600;Secure File Transfer Protocol &#1571;&#1608; SSH File Transfer Protocol) &#1601;&#1607;&#1608; &#1576;&#1585;&#1608;&#1578;&#1608;&#1603;&#1608;&#1604; &#1605;&#1606;&#1601;&#1589;&#1616;&#1604; &#1610;&#1571;&#1578;&#1610; &#1605;&#1615;&#1581;&#1586;&#1617;&#1605;&#1611;&#1575; &#1576; SSH &#1608;&#1610;&#1593;&#1605;&#1604; &#1576;&#1591;&#1585;&#1610;&#1602;&#1577; &#1605;&#1588;&#1575;&#1576;&#1607;&#1577; &#1604;FTP &#1608;&#1604;&#1603;&#1606; &#1593;&#1576;&#1585; &#1575;&#1578;&#1617;&#1589;&#1575;&#1604; &#1605;&#1615;&#1572;&#1605;&#1617;&#1614;&#1606;. &#1605;&#1610;&#1586;&#1577; SFTP &#1607;&#1610; &#1573;&#1605;&#1603;&#1575;&#1606;&#1610;&#1617;&#1577; &#1575;&#1604;&#1575;&#1587;&#1578;&#1593;&#1575;&#1606;&#1577; &#1576;&#1575;&#1578;&#1617;&#1589;&#1575;&#1604; &#1605;&#1615;&#1572;&#1605;&#1617;&#1614;&#1606; &#1604;&#1604;&#1578;&#1617;&#1606;&#1602;&#1604; &#1601;&#1610; &#1606;&#1592;&#1575;&#1605;&#1614;&#1610; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578;&#1548; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1608;&#1575;&#1604;&#1576;&#1593;&#1610;&#1583;&#1563; &#1586;&#1610;&#1575;&#1583;&#1577;&#1611; &#1593;&#1604;&#1609; &#1573;&#1605;&#1603;&#1575;&#1606;&#1610;&#1617;&#1577; &#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1576;&#1610;&#1606; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605;&#1610;&#1606;.</p><p>&#1610;&#1615;&#1601;&#1590;&#1617;&#1614;&#1604; &#1594;&#1575;&#1604;&#1576;&#1611;&#1575; &#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605;&#1615; SFTP &#1576;&#1583;&#1604;&#1611;&#1575; &#1605;&#1606; FTP &#1606;&#1592;&#1585;&#1575; &#1604;&#1605;&#1610;&#1586;&#1575;&#1578; &#1575;&#1604;&#1571;&#1605;&#1575;&#1606; &#1575;&#1604;&#1605;&#1615;&#1590;&#1618;&#1605;&#1614;&#1585;&#1614;&#1577; &#1608;&#1602;&#1575;&#1576;&#1604;&#1610;&#1617;&#1577; &#1575;&#1604;&#1575;&#1593;&#1578;&#1605;&#1575;&#1583; &#1593;&#1604;&#1609; &#1575;&#1578;&#1617;&#1589;&#1575;&#1604; SSH. &#1576;&#1585;&#1608;&#1578;&#1608;&#1603;&#1608;&#1604; FTP &#1594;&#1610;&#1585; &#1570;&#1605;&#1606; &#1608;&#1610;&#1580;&#1583;&#1615;&#1585; &#1571;&#1604;&#1617;&#1575; &#1610;&#1615;&#1587;&#1578;&#1582;&#1583;&#1605; &#1573;&#1604;&#1617;&#1575; &#1601;&#1610; &#1581;&#1575;&#1604;&#1575;&#1578; &#1605;&#1581;&#1583;&#1608;&#1583;&#1577; &#1590;&#1605;&#1606; &#1588;&#1576;&#1603;&#1575;&#1578; &#1605;&#1608;&#1579;&#1608;&#1602;&#1577;.&#1578;&#1615;&#1578;&#1610;&#1581; &#1593;&#1583;&#1617;&#1577; &#1571;&#1583;&#1608;&#1575;&#1578; SFTP &#1593;&#1576;&#1585; &#1608;&#1575;&#1580;&#1607;&#1577; &#1585;&#1587;&#1608;&#1605;&#1610;&#1617;&#1577;&#1548; &#1573;&#1604;&#1617;&#1575; &#1571;&#1606;&#1617;&#1606;&#1575; &#1601;&#1610; &#1607;&#1584;&#1575; &#1575;&#1604;&#1583;&#1617;&#1604;&#1610;&#1604; &#1587;&#1606;&#1593;&#1578;&#1605;&#1583; &#1593;&#1604;&#1609; &#1587;&#1591;&#1585; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585;.</p><h2 id="&#1603;&#1610;&#1601;-&#1610;&#1587;&#1578;&#1582;&#1583;&#1605;-sftp-&#1604;&#1604;&#1575;&#1578;&#1589;&#1575;&#1604;">&#1603;&#1610;&#1601; &#1610;&#1615;&#1587;&#1578;&#1582;&#1583;&#1614;&#1605; SFTP &#1604;&#1604;&#1575;&#1578;&#1617;&#1589;&#1575;&#1604;&#1567;</h2><p>&#1610;&#1614;&#1587;&#1578;&#1593;&#1605;&#1604; SFTP &#1575;&#1601;&#1578;&#1585;&#1575;&#1590;&#1610;&#1617;&#1611;&#1575; &#1576;&#1585;&#1608;&#1578;&#1608;&#1603;&#1608;&#1604; &#1614; SSH &#1604;&#1604;&#1575;&#1587;&#1578;&#1610;&#1579;&#1575;&#1602; Authentication &#1608;&#1576;&#1583;&#1569; &#1575;&#1578;&#1617;&#1589;&#1575;&#1604; &#1570;&#1605;&#1606;. &#1578;&#1578;&#1608;&#1601;&#1617;&#1585; &#1604;&#1607;&#1584;&#1575; &#1575;&#1604;&#1587;&#1617;&#1576;&#1576; &#1606;&#1601;&#1587; &#1591;&#1585;&#1602; SSH &#1604;&#1604;&#1575;&#1587;&#1578;&#1610;&#1579;&#1575;&#1602; &#1601;&#1610; SFTP.<br>&#1606;&#1606;&#1589;&#1581; &#1576;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1605;&#1601;&#1575;&#1578;&#1610;&#1581; SSH &#1576;&#1583;&#1604;&#1611;&#1575; &#1605;&#1606; &#1603;&#1604;&#1605;&#1575;&#1578; &#1575;&#1604;&#1587;&#1617;&#1585;&#1617;&#1548; &#1593;&#1604;&#1609; &#1575;&#1604;&#1585;&#1594;&#1605; &#1605;&#1606; &#1587;&#1607;&#1608;&#1604;&#1577; &#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1607;&#1584;&#1607; &#1575;&#1604;&#1571;&#1582;&#1610;&#1585;&#1577;. &#1571;&#1606;&#1588;&#1574; &#1605;&#1601;&#1575;&#1578;&#1610;&#1581; SSH &#1608;&#1575;&#1606;&#1602;&#1615;&#1604; &#1575;&#1604;&#1605;&#1601;&#1578;&#1575;&#1581; &#1575;&#1604;&#1593;&#1605;&#1608;&#1605;&#1610;&#1617; &#1573;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1617;&#1584;&#1610; &#1578;&#1615;&#1585;&#1610;&#1583; &#1575;&#1604;&#1608;&#1604;&#1608;&#1580; &#1573;&#1604;&#1610;&#1607;. &#1607;&#1584;&#1607; &#1575;&#1604;&#1591;&#1617;&#1585;&#1610;&#1602;&#1577; &#1570;&#1605;&#1614;&#1606; &#1608;&#1571;&#1603;&#1579;&#1585; &#1575;&#1602;&#1578;&#1589;&#1575;&#1583;&#1611;&#1575;&#1548; &#1593;&#1604;&#1609; &#1575;&#1604;&#1571;&#1605;&#1583; &#1575;&#1604;&#1576;&#1593;&#1610;&#1583;&#1548; &#1601;&#1610; &#1575;&#1604;&#1608;&#1602;&#1578; &#1575;&#1604;&#1604;&#1617;&#1575;&#1586;&#1605; &#1604;&#1604;&#1608;&#1604;&#1608;&#1580;. &#1573;&#1606; &#1604;&#1605; &#1578;&#1603;&#1615;&#1606; &#1571;&#1593;&#1583;&#1583;&#1578;&#1614; &#1582;&#1575;&#1583;&#1608;&#1605;&#1603; &#1604;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1605;&#1601;&#1575;&#1578;&#1610;&#1581; SSH &#1601;<a rel="external nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2">&#1607;&#1584;&#1575; &#1575;&#1604;&#1583;&#1617;&#1604;&#1610;&#1604;</a> &#1610;&#1588;&#1585;&#1581; &#1604;&#1603; &#1603;&#1610;&#1601;&#1610;&#1617;&#1577; &#1584;&#1604;&#1603;.</p><p>&#1578;&#1593;&#1606;&#1610; &#1602;&#1583;&#1585;&#1578;&#1603; &#1593;&#1604;&#1609; &#1575;&#1604;&#1575;&#1578;&#1617;&#1589;&#1575;&#1604; &#1576;&#1582;&#1575;&#1583;&#1608;&#1605;&#1603; &#1593;&#1606; &#1591;&#1585;&#1610;&#1602; SSH &#1571;&#1606;&#1617; &#1604;&#1583;&#1610;&#1603; &#1603;&#1575;&#1605;&#1604; &#1575;&#1604;&#1605;&#1578;&#1591;&#1604;&#1617;&#1614;&#1576;&#1575;&#1578; &#1604;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; SFTP &#1601;&#1610; &#1573;&#1583;&#1575;&#1585;&#1577; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578;. &#1606;&#1601;&#1617;&#1616;&#1584; &#1575;&#1604;&#1571;&#1605;&#1585; &#1575;&#1604;&#1578;&#1617;&#1575;&#1604;&#1610; &#1604;&#1575;&#1582;&#1578;&#1576;&#1575;&#1585; &#1575;&#1604;&#1608;&#1604;&#1608;&#1580; &#1576;SSH:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">ssh username@remote_hostname_or_IP</pre><p>&#1606;&#1601;&#1617;&#1584; &#1571;&#1605;&#1585; &#1575;&#1604;&#1582;&#1585;&#1608;&#1580; &#1576;&#1593;&#1583; &#1606;&#1580;&#1575;&#1581; &#1575;&#1604;&#1608;&#1604;&#1608;&#1580; &#1576;SSH:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">exit</pre><p>&#1575;&#1604;&#1571;&#1605;&#1585; &#1575;&#1604;&#1578;&#1617;&#1575;&#1604;&#1610; &#1610;&#1576;&#1583;&#1571; &#1575;&#1578;&#1617;&#1589;&#1575;&#1604;&#1614; SSH&#1548; &#1579;&#1605; &#1610;&#1601;&#1578;&#1581; &#1580;&#1604;&#1587;&#1577; Session &#1605;&#1606; SFTP &#1593;&#1606; &#1591;&#1585;&#1610;&#1602; &#1607;&#1584;&#1575; &#1575;&#1604;&#1575;&#1578;&#1617;&#1589;&#1575;&#1604;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">sftp username@remote_hostname_or_IP</pre><p>&#1587;&#1578;&#1578;&#1617;&#1589;&#1604; &#1576;&#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1575;&#1604;&#1576;&#1593;&#1610;&#1583; &#1608;&#1587;&#1610;&#1578;&#1581;&#1608;&#1617;&#1604; &#1587;&#1591;&#1585;&#1615; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1573;&#1604;&#1609; &#1587;&#1591;&#1585; &#1571;&#1608;&#1575;&#1605;&#1585; SFTP.</p><h2 id="&#1575;&#1604;&#1581;&#1589;&#1608;&#1604;-&#1593;&#1604;&#1609;-&#1575;&#1604;&#1605;&#1587;&#1575;&#1593;&#1583;&#1577;-&#1601;&#1610;-sftp">&#1575;&#1604;&#1581;&#1589;&#1608;&#1604; &#1593;&#1604;&#1609; &#1575;&#1604;&#1605;&#1587;&#1575;&#1593;&#1583;&#1577; &#1601;&#1610; SFTP</h2><p>&#1571;&#1601;&#1590;&#1604; &#1608;&#1587;&#1610;&#1604;&#1577; &#1604;&#1605;&#1593;&#1585;&#1601;&#1577; &#1603;&#1610;&#1601; &#1610;&#1593;&#1605;&#1604; SFTP &#1607;&#1610; &#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1571;&#1605;&#1585; <code>help</code> &#1575;&#1604;&#1617;&#1584;&#1610; &#1610;&#1615;&#1593;&#1591;&#1610; &#1605;&#1604;&#1582;&#1617;&#1614;&#1589;&#1611;&#1575; &#1605;&#1606; &#1578;&#1608;&#1579;&#1610;&#1602; &#1575;&#1604;&#1605;&#1615;&#1587;&#1575;&#1593;&#1583;&#1577; &#1601;&#1610; SFTP.<br>&#1610;&#1615;&#1605;&#1603;&#1606; &#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605;&#1615; &#1571;&#1610; &#1605;&#1606; &#1575;&#1604;&#1591;&#1617;&#1585;&#1610;&#1602;&#1578;&#1614;&#1610;&#1618;&#1606; &#1575;&#1604;&#1578;&#1617;&#1575;&#1604;&#1610;&#1578;&#1614;&#1610;&#1618;&#1606; &#1604;&#1604;&#1581;&#1589;&#1608;&#1604; &#1593;&#1604;&#1609; &#1575;&#1604;&#1605;&#1587;&#1575;&#1593;&#1583;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">help</pre><p>&#1571;&#1608;</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">?</pre><p>&#1587;&#1578;&#1592;&#1607;&#1585; &#1601;&#1610; &#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577; &#1580;&#1605;&#1610;&#1593; &#1571;&#1608;&#1575;&#1605;&#1585; SFTP &#1575;&#1604;&#1605;&#1615;&#1578;&#1575;&#1581;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="" class="php ipsCode prettyprint">Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or filesystem containing 'path'
exit                               Quit sftp
get [-Ppr] remote [local]          Download file
help                               Display this help text
lcd path                           Change local directory to 'path'
. . .</pre><p>&#1587;&#1606;&#1578;&#1591;&#1585;&#1617;&#1602; &#1601;&#1610; &#1575;&#1604;&#1601;&#1602;&#1585;&#1575;&#1578; &#1575;&#1604;&#1605;&#1615;&#1602;&#1576;&#1604;&#1577; &#1604;&#1576;&#1593;&#1590; &#1607;&#1584;&#1607; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585;.</p><h2 id="&#1575;&#1604;&#1578;&#1606;&#1602;&#1604;-&#1576;&#1610;&#1606;-&#1575;&#1604;&#1605;&#1604;&#1601;&#1575;&#1578;-&#1576;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605;-sftp">&#1575;&#1604;&#1578;&#1617;&#1606;&#1602;&#1617;&#1604; &#1576;&#1610;&#1606; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1576;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; SFTP</h2><p>&#1610;&#1615;&#1578;&#1610;&#1581; SFTP &#1571;&#1608;&#1575;&#1605;&#1585; &#1604;&#1604;&#1578;&#1617;&#1606;&#1602;&#1617;&#1604; &#1576;&#1610;&#1606; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1576;&#1593;&#1610;&#1583;. &#1607;&#1584;&#1607; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1605;&#1615;&#1588;&#1575;&#1576;&#1607;&#1577; &#1604;&#1571;&#1608;&#1575;&#1605;&#1585; Shell &#1575;&#1604;&#1617;&#1578;&#1610; &#1578;&#1572;&#1583;&#1617;&#1610; &#1606;&#1601;&#1587; &#1575;&#1604;&#1594;&#1585;&#1590;.</p><p>&#1606;&#1615;&#1585;&#1610;&#1583; &#1571;&#1608;&#1617;&#1604;&#1611;&#1575; &#1605;&#1593;&#1585;&#1601;&#1577;&#1614; &#1571;&#1610;&#1606; &#1606;&#1608;&#1580;&#1614;&#1583; &#1590;&#1605;&#1606; &#1606;&#1592;&#1575;&#1605; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605;. &#1606;&#1615;&#1606;&#1601;&#1617;&#1584; &#1575;&#1604;&#1571;&#1605;&#1585; &#1575;&#1604;&#1578;&#1617;&#1575;&#1604;&#1610;&#1548; &#1605;&#1579;&#1604; &#1605;&#1575; &#1603;&#1606;&#1617;&#1575; &#1587;&#1606;&#1601;&#1593;&#1604; &#1604;&#1608; &#1571;&#1606;&#1617;&#1606;&#1575; &#1601;&#1610; &#1580;&#1604;&#1587;&#1577; Shell &#1575;&#1593;&#1578;&#1610;&#1617;&#1575;&#1583;&#1610;&#1617;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">pwd</pre><p>&#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577; &#1607;&#1610;&#1617;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">Remote working directory: /home/demouser</pre><p>&#1610;&#1615;&#1605;&#1603;&#1606; &#1593;&#1585;&#1590; &#1605;&#1581;&#1578;&#1608;&#1609; &#1575;&#1604;&#1605;&#1615;&#1580;&#1604;&#1617;&#1583; &#1593;&#1576;&#1585; &#1571;&#1605;&#1585; &#1575;&#1593;&#1578;&#1610;&#1617;&#1575;&#1583;&#1610;&#1617; &#1570;&#1582;&#1585; &#1607;&#1608;&#1617;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">ls</pre><p>&#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">Summary.txt info.html temp.txt testDirectory</pre><p>&#1610;&#1615;&#1585;&#1580;&#1609; &#1605;&#1604;&#1575;&#1581;&#1592;&#1577; &#1571;&#1606;&#1617; &#1571;&#1608;&#1575;&#1605;&#1585; SFTP &#1604;&#1610;&#1587;&#1578; &#1571;&#1608;&#1575;&#1605;&#1585; Shell &#1575;&#1604;&#1575;&#1593;&#1578;&#1610;&#1617;&#1575;&#1583;&#1610;&#1617;&#1577; &#1585;&#1594;&#1605;&#1614; &#1575;&#1604;&#1588;&#1617;&#1576;&#1607; &#1576;&#1610;&#1606;&#1607;&#1605;&#1575;&#1548; &#1603;&#1605;&#1575; &#1571;&#1606;&#1617;&#1607;&#1575; &#1604;&#1610;&#1587;&#1578; &#1576;&#1606;&#1601;&#1587; &#1575;&#1604;&#1594;&#1616;&#1606;&#1609; &#1575;&#1604;&#1608;&#1592;&#1610;&#1601;&#1610;&#1563; &#1573;&#1604;&#1617;&#1575; &#1571;&#1606;&#1617;&#1607;&#1575; &#1578;&#1615;&#1578;&#1610;&#1581; &#1576;&#1593;&#1590; &#1575;&#1604;&#1582;&#1610;&#1617;&#1575;&#1585;&#1575;&#1578; &#1575;&#1604;&#1607;&#1575;&#1605;&#1617;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">ls -la

drwxr-xr-x    5 demouser   demouser       4096 Aug 13 15:11 .
drwxr-xr-x    3 root     root         4096 Aug 13 15:02 ..
-rw-------    1 demouser   demouser          5 Aug 13 15:04 .bash_history
-rw-r--r--    1 demouser   demouser        220 Aug 13 15:02 .bash_logout
-rw-r--r--    1 demouser   demouser       3486 Aug 13 15:02 .bashrc
drwx------    2 demouser   demouser       4096 Aug 13 15:04 .cache
-rw-r--r--    1 demouser   demouser        675 Aug 13 15:02 .profile
</pre><p><span style="line-height: 1.6;">&#1604;&#1604;&#1583;&#1617;&#1582;&#1608;&#1604; &#1573;&#1604;&#1609; &#1605;&#1580;&#1604;&#1617;&#1614;&#1583; &#1606;&#1606;&#1601;&#1617;&#1616;&#1584; &#1575;&#1604;&#1571;&#1605;&#1585; cd:</span></p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">cd testDirectory</pre><p>&#1585;&#1571;&#1610;&#1606;&#1575; &#1603;&#1610;&#1601; &#1610;&#1615;&#1605;&#1603;&#1606;&#1606;&#1575; &#1575;&#1604;&#1578;&#1617;&#1606;&#1602;&#1617;&#1604; &#1601;&#1610; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1575;&#1604;&#1576;&#1593;&#1610;&#1583;&#1548; &#1608;&#1604;&#1603;&#1606; &#1605;&#1575;&#1584;&#1575; &#1573;&#1606; &#1571;&#1585;&#1583;&#1606;&#1575; &#1575;&#1604;&#1608;&#1589;&#1608;&#1604; &#1573;&#1604;&#1609; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1605;&#1608;&#1580;&#1608;&#1583;&#1577; &#1593;&#1604;&#1609; &#1575;&#1604;&#1580;&#1607;&#1575;&#1586; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610;&#1567;<br>&#1610;&#1615;&#1605;&#1603;&#1606;&#1606;&#1575; &#1578;&#1608;&#1580;&#1610;&#1607; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1573;&#1604;&#1609; &#1606;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1593;&#1606; &#1591;&#1585;&#1610;&#1602; &#1603;&#1578;&#1575;&#1576;&#1577; &#1581;&#1585;&#1601; l &#1571;&#1605;&#1575;&#1605;&#1607;&#1575; (<code>l</code> &#1604;&#1600;&nbsp;<code>local</code>).</p><p>&#1578;&#1608;&#1580;&#1583; &#1571;&#1608;&#1575;&#1605;&#1585; &#1605;&#1581;&#1604;&#1610;&#1617;&#1577; &#1605;&#1603;&#1575;&#1601;&#1574;&#1577; &#1604;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1575;&#1604;&#1617;&#1578;&#1610; &#1593;&#1585;&#1590;&#1606;&#1575;&#1607;&#1575; &#1587;&#1575;&#1576;&#1602;&#1611;&#1575;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">lpwd</pre><p>&#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577;</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">Local working directory: /Users/demouser</pre><p>&#1608;&#1604;&#1593;&#1585;&#1590; &#1605;&#1581;&#1578;&#1608;&#1609; &#1575;&#1604;&#1605;&#1580;&#1604;&#1617;&#1583; &#1575;&#1604;&#1581;&#1575;&#1604;&#1610; &#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">lls</pre><p>&#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="" class="php ipsCode prettyprint">Desktop         local.txt       test.html
Documents       analysis.rtf        zebra.html</pre><p>&#1610;&#1615;&#1605;&#1603;&#1606; &#1571;&#1610;&#1590;&#1611;&#1575; &#1578;&#1594;&#1610;&#1610;&#1585; &#1575;&#1604;&#1605;&#1580;&#1604;&#1617;&#1583; &#1575;&#1604;&#1617;&#1584;&#1610; &#1606;&#1615;&#1585;&#1610;&#1583; &#1575;&#1604;&#1578;&#1617;&#1593;&#1575;&#1605;&#1604; &#1605;&#1593;&#1607; &#1593;&#1604;&#1609; &#1575;&#1604;&#1580;&#1607;&#1575;&#1586; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">lcd Desktop</pre><h2 id="&#1606;&#1602;&#1604;-&#1575;&#1604;&#1605;&#1604;&#1601;&#1575;&#1578;-&#1576;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605;-sftp">&#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1576;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; SFTP</h2><p>&#1604;&#1606; &#1610;&#1603;&#1608;&#1606; &#1604;&#1604;&#1578;&#1617;&#1606;&#1602;&#1617;&#1604; &#1601;&#1610; &#1606;&#1592;&#1575;&#1605;&#1614;&#1610; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1575;&#1604;&#1576;&#1593;&#1610;&#1583; &#1608;&#1575;&#1604;&#1580;&#1607;&#1575;&#1586; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1603;&#1579;&#1610;&#1585;&#1615; &#1601;&#1575;&#1574;&#1583;&#1577; &#1573;&#1606; &#1604;&#1605; &#1606;&#1587;&#1578;&#1591;&#1616;&#1593; &#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1576;&#1610;&#1606; &#1575;&#1604;&#1575;&#1579;&#1606;&#1610;&#1618;&#1606;.</p><h3 id="1-&#1606;&#1602;&#1604;-&#1605;&#1604;&#1601;&#1575;&#1578;-&#1605;&#1606;-&#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605;-&#1573;&#1604;&#1609;-&#1575;&#1604;&#1580;&#1607;&#1575;&#1586;-&#1575;&#1604;&#1605;&#1581;&#1604;&#1610;">1- &#1606;&#1602;&#1604; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1605;&#1606; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1573;&#1604;&#1609; &#1575;&#1604;&#1580;&#1607;&#1575;&#1586; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610;</h3><p>&#1606;&#1615;&#1606;&#1601;&#1617;&#1584; &#1575;&#1604;&#1571;&#1605;&#1585; &#1575;&#1604;&#1578;&#1617;&#1575;&#1604;&#1610; &#1604;&#1578;&#1606;&#1586;&#1610;&#1604; &#1605;&#1604;&#1601;&#1617; &#1605;&#1606; &#1606;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1576;&#1593;&#1610;&#1583; (&#1581;&#1610;&#1579;&#1615; remoteFile &#1575;&#1587;&#1605; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;):</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">get remoteFile

Fetching /home/demouser/remoteFile to remoteFile
/home/demouser/remoteFile                       100%   37KB  36.8KB/s   00:01
</pre><p><span style="line-height: 1.6;">&#1610;&#1576;&#1581;&#1579; &#1575;&#1604;&#1571;&#1605;&#1585; &#1593;&#1606; &#1605;&#1604;&#1601;&#1617; &#1576;&#1575;&#1587;&#1605; remoteFile &#1601;&#1610; &#1605;&#1580;&#1604;&#1617;&#1583; &#1575;&#1604;&#1593;&#1605;&#1604; &#1593;&#1604;&#1609; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1579;&#1605;&#1617; &#1610;&#1615;&#1606;&#1586;&#1617;&#1604;&#1607; &#1573;&#1604;&#1609; &#1575;&#1604;&#1580;&#1607;&#1575;&#1586; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1608;&#1610;&#1590;&#1593;&#1607; &#1601;&#1610; &#1605;&#1580;&#1604;&#1617;&#1583; &#1575;&#1604;&#1593;&#1605;&#1604; &#1605;&#1593; &#1575;&#1604;&#1605;&#1615;&#1581;&#1575;&#1601;&#1592;&#1577; &#1593;&#1604;&#1609; &#1575;&#1604;&#1575;&#1587;&#1605;.</span></p><p>&#1573;&#1606; &#1571;&#1585;&#1583;&#1606;&#1575; &#1578;&#1594;&#1610;&#1610;&#1585; &#1575;&#1587;&#1605; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617; &#1576;&#1593;&#1583; &#1578;&#1606;&#1586;&#1610;&#1604;&#1607; &#1601;&#1610;&#1605;&#1603;&#1606;&#1606;&#1575; &#1578;&#1593;&#1610;&#1610;&#1606; &#1575;&#1604;&#1575;&#1587;&#1605; &#1575;&#1604;&#1580;&#1583;&#1610;&#1583; &#1593;&#1576;&#1585; &#1584;&#1603;&#1585;&#1607; &#1576;&#1593;&#1583; &#1575;&#1587;&#1605; &#1575;&#1604;&#1605;&#1604;&#1601; &#1575;&#1604;&#1605;&#1615;&#1585;&#1575;&#1583; &#1606;&#1602;&#1604;&#1607; (localFile &#1601;&#1610; &#1581;&#1575;&#1604;&#1578;&#1606;&#1575;):</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">get remoteFile localFile</pre><p>&#1578;&#1608;&#1580;&#1583; &#1582;&#1610;&#1617;&#1575;&#1585;&#1575;&#1578; &#1578;&#1593;&#1605;&#1604; &#1605;&#1593; &#1571;&#1605;&#1585; get. &#1610;&#1615;&#1605;&#1603;&#1606; &#1593;&#1604;&#1609; &#1587;&#1576;&#1610;&#1604; &#1575;&#1604;&#1605;&#1579;&#1575;&#1604;&#1548; &#1606;&#1602;&#1604;&#1615; &#1605;&#1580;&#1604;&#1617;&#1614;&#1583; &#1608;&#1603;&#1604;&#1617; &#1605;&#1581;&#1578;&#1608;&#1610;&#1575;&#1578;&#1616;&#1607; &#1593;&#1576;&#1585; &#1578;&#1581;&#1583;&#1610;&#1583; &#1582;&#1610;&#1617;&#1575;&#1585; &#1575;&#1604;&#1578;&#1617;&#1603;&#1585;&#1575;&#1585; &#1603;&#1605;&#1575; &#1610;&#1604;&#1610;:<code>get -r someDirectory</code>&#1604;&#1604;&#1581;&#1601;&#1575;&#1592; &#1593;&#1604;&#1609; <a href="http://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%91%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A3%D8%B0%D9%88%D9%86%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-permissions-r25/">&#1571;&#1584;&#1608;&#1606;&#1575;&#1578; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;</a> &#1608;&#1578;&#1575;&#1585;&#1610;&#1582; &#1575;&#1604;&#1608;&#1589;&#1608;&#1604; &#1573;&#1604;&#1610;&#1607; &#1606;&#1587;&#1578;&#1582;&#1583;&#1605; &#1575;&#1604;&#1582;&#1610;&#1617;&#1575;&#1585; P- &#1571;&#1608; p-:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">get -Pr someDirectory</pre><h3 id="2-&#1606;&#1602;&#1604;-&#1605;&#1604;&#1601;&#1575;&#1578;-&#1605;&#1606;-&#1575;&#1604;&#1580;&#1607;&#1575;&#1586;-&#1575;&#1604;&#1605;&#1581;&#1604;&#1610;-&#1573;&#1604;&#1609;-&#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605;">2- &#1606;&#1602;&#1604; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1605;&#1606; &#1575;&#1604;&#1580;&#1607;&#1575;&#1586; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1573;&#1604;&#1609; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605;</h3><p>&#1605;&#1606; &#1575;&#1604;&#1587;&#1617;&#1607;&#1604; &#1606;&#1602;&#1604;&#1615; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1573;&#1604;&#1609; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605;&#1548; &#1608;&#1584;&#1604;&#1603; &#1593;&#1606; &#1591;&#1585;&#1610;&#1602; &#1571;&#1605;&#1585; <code>put</code> &#1575;&#1604;&#1605;&#1615;&#1588;&#1575;&#1576;&#1607; &#1601;&#1610; &#1591;&#1585;&#1610;&#1602;&#1577; &#1593;&#1605;&#1604;&#1607; &#1604;&#1571;&#1605;&#1585; <code>get</code> &#1575;&#1604;&#1617;&#1584;&#1610; &#1578;&#1581;&#1583;&#1617;&#1579;&#1606;&#1575; &#1593;&#1606;&#1607; &#1601;&#1610; &#1575;&#1604;&#1601;&#1602;&#1585;&#1577; &#1575;&#1604;&#1587;&#1617;&#1575;&#1576;&#1602;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">put localFile</pre><p>&#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">Uploading localFile to /home/demouser/localFile
localFile                                     100% 7607     7.4KB/s   00:00
</pre><pre><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">&#1604;&#1606;&#1602;&#1604; &#1605;&#1580;&#1604;&#1617;&#1583; &#1608;&#1603;&#1604;&#1617; &#1605;&#1581;&#1578;&#1608;&#1610;&#1575;&#1578;&#1616;&#1607; &#1606;&#1606;&#1601;&#1617;&#1584; &#1575;&#1604;&#1571;&#1605;&#1585; (&#1606;&#1601;&#1587; &#1582;&#1610;&#1617;&#1575;&#1585;&#1575;&#1578; </span><code style="line-height: 1.6;">get</code><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;"> &#1578;&#1593;&#1605;&#1604; &#1605;&#1593; </span><code style="line-height: 1.6;">put</code><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">):</span>
</pre><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">put -r localDirectory</pre><p>&#1571;&#1583;&#1575;&#1577; <code>df</code> &#1605;&#1606; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1575;&#1604;&#1605;&#1615;&#1601;&#1610;&#1583;&#1577; &#1571;&#1579;&#1606;&#1575;&#1569; &#1578;&#1606;&#1586;&#1610;&#1604; Download &#1608;&#1578;&#1581;&#1605;&#1610;&#1604; Upload &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578;. &#1578;&#1615;&#1588;&#1576;&#1607; &#1601;&#1610; &#1570;&#1604;&#1610;&#1617;&#1577; &#1593;&#1605;&#1604;&#1607;&#1575; &#1571;&#1605;&#1585; <code>df</code> &#1575;&#1604;&#1605;&#1608;&#1580;&#1608;&#1583; &#1590;&#1605;&#1606; &#1571;&#1608;&#1575;&#1605;&#1585; Shell&#1548; &#1581;&#1610;&#1579;&#1615; &#1578;&#1587;&#1605;&#1581; &#1576;&#1575;&#1604;&#1578;&#1617;&#1581;&#1602;&#1617;&#1602; &#1605;&#1606; &#1571;&#1606;&#1617; &#1604;&#1583;&#1610;&#1603; &#1605;&#1587;&#1575;&#1581;&#1577; &#1603;&#1575;&#1601;&#1610;&#1617;&#1577; &#1601;&#1610; &#1575;&#1604;&#1602;&#1585;&#1589; &#1575;&#1604;&#1589;&#1617;&#1604;&#1576; &#1602;&#1576;&#1604; &#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">df -h</pre><p>&#1605;&#1579;&#1575;&#1604; &#1593;&#1604;&#1609; &#1606;&#1578;&#1610;&#1580;&#1577; &#1578;&#1606;&#1601;&#1610;&#1584; &#1575;&#1604;&#1571;&#1605;&#1585;:</p><pre data-pbcklang="php" data-pbcktabsize="" class="php ipsCode prettyprint">Size     Used    Avail   (root)    %Capacity
19.9GB   1016MB   17.9GB   18.9GB           4%</pre><p>&#1610;&#1615;&#1585;&#1580;&#1609; &#1605;&#1604;&#1575;&#1581;&#1592;&#1577; &#1571;&#1606;&#1617;&#1607; &#1604;&#1575; &#1578;&#1608;&#1580;&#1583; &#1606;&#1587;&#1582;&#1577; &#1605;&#1581;&#1604;&#1610;&#1617;&#1577; &#1605;&#1606; &#1607;&#1584;&#1575; &#1575;&#1604;&#1571;&#1605;&#1585;&#1548; &#1604;&#1603;&#1606; &#1610;&#1615;&#1605;&#1603;&#1606;&#1606;&#1575; &#1578;&#1580;&#1575;&#1608;&#1586; &#1607;&#1584;&#1575; &#1575;&#1604;&#1602;&#1615;&#1589;&#1608;&#1585; &#1593;&#1606; &#1591;&#1585;&#1610;&#1602; &#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1575;&#1604;&#1571;&#1605;&#1585; <code>!</code>.<br>&#1610;&#1601;&#1578;&#1581; &#1571;&#1605;&#1585; <code>!</code> &#1580;&#1604;&#1587;&#1577; &#1605;&#1581;&#1604;&#1610;&#1617;&#1577; &#1610;&#1615;&#1605;&#1603;&#1606;&#1606;&#1575; &#1578;&#1606;&#1601;&#1610;&#1584; &#1571;&#1610; &#1571;&#1605;&#1585; Shell &#1605;&#1615;&#1578;&#1608;&#1601;&#1617;&#1585; &#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1583;&#1575;&#1582;&#1604;&#1614;&#1607;&#1575;. &#1604;&#1605;&#1593;&#1585;&#1601;&#1577; &#1605;&#1587;&#1575;&#1581;&#1577; &#1575;&#1604;&#1602;&#1585;&#1589; &#1575;&#1604;&#1589;&#1617;&#1604;&#1576; &#1575;&#1604;&#1605;&#1615;&#1578;&#1575;&#1581;&#1577; &#1606;&#1587;&#1578;&#1582;&#1583;&#1605; &#1571;&#1605;&#1585; <code>df</code>.</p><pre data-pbcklang="php" data-pbcktabsize="" class="php ipsCode prettyprint">!
df -h</pre><p>&#1575;&#1604;&#1606;&#1578;&#1610;&#1580;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">Filesystem      Size   Used  Avail Capacity  Mounted on
/dev/disk0s2   595Gi   52Gi  544Gi     9%    /
devfs          181Ki  181Ki    0Bi   100%    /dev
map -hosts       0Bi    0Bi    0Bi   100%    /net
map auto_home    0Bi    0Bi    0Bi   100%    /home
</pre><pre><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">&#1587;&#1610;&#1615;&#1606;&#1601;&#1617;&#1584; &#1571;&#1610; &#1571;&#1605;&#1585; &#1605;&#1615;&#1578;&#1608;&#1601;&#1617;&#1585; &#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1603;&#1605;&#1575; &#1610;&#1580;&#1576;&#1563; &#1604;&#1604;&#1585;&#1617;&#1580;&#1608;&#1593; &#1573;&#1604;&#1609; &#1587;&#1591;&#1585; &#1571;&#1608;&#1575;&#1605;&#1585; SFTP &#1606;&#1615;&#1606;&#1601;&#1617;&#1584; &#1575;&#1604;&#1571;&#1605;&#1585;:</span>
</pre><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">exit</pre><p>&#1610;&#1580;&#1576; &#1571;&#1606; &#1610;&#1592;&#1607;&#1585; &#1604;&#1583;&#1610;&#1603; &#1575;&#1604;&#1570;&#1606; &#1587;&#1591;&#1585;&#1615; &#1571;&#1608;&#1575;&#1605;&#1585; SFTP.</p><h2 id="&#1575;&#1604;&#1578;&#1593;&#1583;&#1610;&#1604;-&#1593;&#1604;&#1609;-&#1582;&#1589;&#1575;&#1574;&#1589;-&#1575;&#1604;&#1605;&#1604;&#1601;&#1575;&#1578;-&#1601;&#1610;-sftp">&#1575;&#1604;&#1578;&#1617;&#1593;&#1583;&#1610;&#1604; &#1593;&#1604;&#1609; &#1582;&#1589;&#1575;&#1574;&#1589; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1601;&#1610; SFTP</h2><p>&#1610;&#1587;&#1605;&#1581; SFTP &#1576;&#1573;&#1580;&#1585;&#1575;&#1569; &#1575;&#1604;&#1593;&#1605;&#1604;&#1610;&#1617;&#1575;&#1578; &#1575;&#1604;&#1571;&#1587;&#1575;&#1587;&#1610;&#1617;&#1577; &#1604;&#1589;&#1610;&#1617;&#1575;&#1606;&#1577; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578;. &#1607;&#1584;&#1607; &#1575;&#1604;&#1593;&#1605;&#1604;&#1610;&#1617;&#1575;&#1578; &#1605;&#1615;&#1601;&#1610;&#1583;&#1577; &#1580;&#1583;&#1617;&#1611;&#1575; &#1593;&#1606;&#1583; &#1575;&#1604;&#1593;&#1605;&#1604; &#1593;&#1604;&#1609; &#1576;&#1615;&#1606;&#1610;&#1577; &#1606;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578;. &#1610;&#1615;&#1605;&#1603;&#1606;&#1603; &#1593;&#1604;&#1609; &#1587;&#1576;&#1610;&#1604; &#1575;&#1604;&#1605;&#1579;&#1575;&#1604;&#1548; &#1578;&#1594;&#1610;&#1610;&#1585;&#1615; &#1605;&#1575;&#1604;&#1603; &#1605;&#1604;&#1601;&#1617; &#1605;&#1608;&#1580;&#1608;&#1583; &#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1576;&#1593;&#1610;&#1583; &#1603;&#1605;&#1575; &#1610;&#1604;&#1610;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">chown userID file</pre><p>&#1604;&#1575;&#1581;&#1592; &#1571;&#1606;&#1617; &#1571;&#1605;&#1585; <code>chown</code> &#1601;&#1610; SFTP &#1604;&#1575; &#1610;&#1602;&#1576;&#1604; &#1571;&#1587;&#1605;&#1575;&#1569; &#1605;&#1587;&#1578;&#1582;&#1583;&#1605;&#1610;&#1606; &#1593;&#1604;&#1609; &#1593;&#1603;&#1587; &#1571;&#1605;&#1585; <code>chown</code> &#1601;&#1610; Shell&#1563; &#1608;&#1604;&#1603;&#1606;&#1617;&#1607; &#1610;&#1591;&#1604;&#1615;&#1576; &#1576;&#1583;&#1604;&#1611;&#1575; &#1605;&#1606; &#1584;&#1604;&#1603; &#1605;&#1593;&#1585;&#1617;&#1601;&#1575;&#1578; &#1575;&#1604;&#1605;&#1615;&#1587;&#1578;&#1582;&#1583;&#1605;&#1610;&#1606;&#1548; <code>UIDs</code>.<br>&#1604;&#1604;&#1571;&#1587;&#1601; &#1604;&#1575;&#1578;&#1608;&#1580;&#1583; &#1591;&#1585;&#1610;&#1602;&#1577; &#1587;&#1607;&#1604;&#1577; &#1604;&#1605;&#1593;&#1585;&#1601;&#1577; &#1605;&#1593;&#1585;&#1617;&#1601; &#1575;&#1604;&#1605;&#1587;&#1578;&#1582;&#1583;&#1605; &#1605;&#1606; &#1587;&#1591;&#1585; &#1571;&#1608;&#1575;&#1605;&#1585; SFTP.<br>&#1575;&#1604;&#1591;&#1617;&#1585;&#1610;&#1602;&#1577; &#1575;&#1604;&#1578;&#1617;&#1575;&#1604;&#1610;&#1577; &#1578;&#1615;&#1601;&#1610;&#1583; &#1601;&#1610; &#1578;&#1580;&#1575;&#1608;&#1586; &#1607;&#1584;&#1575; &#1575;&#1604;&#1602;&#1589;&#1608;&#1585;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">get /etc/passwd
!less passwd
</pre><pre><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">&#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577;:</span>
</pre><pre data-pbcklang="php" data-pbcktabsize="" class="php ipsCode prettyprint">root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
...</pre><p>&#1604;&#1575;&#1581;&#1616;&#1592; &#1571;&#1606;&#1617;&#1606;&#1575; &#1571;&#1590;&#1601;&#1606;&#1575; &#1575;&#1604;&#1571;&#1605;&#1585; <code>!</code> &#1571;&#1605;&#1575;&#1605; &#1571;&#1605;&#1585; &#1605;&#1606; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610;&#1548; &#1576;&#1583;&#1604;&#1611;&#1575; &#1605;&#1606; &#1578;&#1606;&#1601;&#1610;&#1584; &#1571;&#1605;&#1585; <code>!</code> &#1579;&#1605; &#1575;&#1604;&#1571;&#1605;&#1585; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1605;&#1606;&#1601;&#1589;&#1604;&#1611;&#1575;. &#1610;&#1589;&#1604;&#1615;&#1581; &#1607;&#1584;&#1575; &#1575;&#1604;&#1575;&#1582;&#1578;&#1589;&#1575;&#1585; &#1604;&#1603;&#1604;&#1617; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1575;&#1604;&#1605;&#1608;&#1580;&#1608;&#1583;&#1577; &#1601;&#1610; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1608;&#1603;&#1575;&#1606; &#1576;&#1573;&#1605;&#1603;&#1575;&#1606;&#1606;&#1575; &#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605;&#1615;&#1607; &#1605;&#1593; &#1571;&#1605;&#1585; <code>df</code> &#1601;&#1610; &#1575;&#1604;&#1601;&#1602;&#1585;&#1577; &#1575;&#1604;&#1587;&#1617;&#1575;&#1576;&#1602;&#1577;.<br>&#1578;&#1608;&#1580;&#1583; &#1605;&#1593;&#1585;&#1617;&#1601;&#1575;&#1578; &#1575;&#1604;&#1605;&#1587;&#1578;&#1582;&#1583;&#1616;&#1605;&#1610;&#1606; &#1601;&#1610; &#1575;&#1604;&#1593;&#1605;&#1608;&#1583; &#1575;&#1604;&#1579;&#1617;&#1575;&#1604;&#1579; &#1605;&#1606; &#1605;&#1604;&#1601; <code>/etc/passwd</code> &#1581;&#1610;&#1579;&#1615; &#1610;&#1615;&#1601;&#1589;&#1614;&#1604; &#1576;&#1610;&#1606; &#1593;&#1605;&#1608;&#1583;&#1610;&#1618;&#1606; &#1576;&#1593;&#1604;&#1575;&#1605;&#1577; <code>:</code>.<br>&#1576;&#1606;&#1601;&#1587; &#1575;&#1604;&#1591;&#1617;&#1585;&#1610;&#1602;&#1577; &#1610;&#1615;&#1605;&#1603;&#1606;&#1606;&#1575; &#1578;&#1594;&#1610;&#1610;&#1585; &#1575;&#1604;&#1605;&#1580;&#1605;&#1608;&#1593;&#1577; &#1575;&#1604;&#1605;&#1575;&#1604;&#1603;&#1577; &#1604;&#1604;&#1605;&#1604;&#1601;&#1617;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">chgrp groupID file</pre><p>&#1605;&#1585;&#1577;&#1611; &#1571;&#1582;&#1585;&#1609;&#1548; &#1604;&#1575; &#1578;&#1608;&#1580;&#1583; &#1591;&#1585;&#1610;&#1602;&#1577; &#1587;&#1607;&#1604;&#1577; &#1604;&#1605;&#1593;&#1585;&#1601;&#1577; &#1605;&#1593;&#1585;&#1617;&#1601; &#1575;&#1604;&#1605;&#1580;&#1605;&#1608;&#1593;&#1577;&#1563; &#1608;&#1604;&#1603;&#1606; &#1610;&#1615;&#1605;&#1603;&#1606;&#1606;&#1575; &#1575;&#1604;&#1604;&#1617;&#1580;&#1608;&#1569; &#1573;&#1604;&#1609; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1575;&#1604;&#1578;&#1617;&#1575;&#1604;&#1610;&#1617;&#1577;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">get /etc/group
!less group
</pre><pre><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">&#1605;&#1579;&#1575;&#1604; &#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1578;&#1610;&#1580;&#1577;:</span>
</pre><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
. . .
</pre><pre><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">&#1606;&#1576;&#1581;&#1579; &#1593;&#1606; &#1605;&#1593;&#1585;&#1617;&#1601; &#1575;&#1604;&#1605;&#1580;&#1605;&#1608;&#1593;&#1577; </span><code style="line-height: 1.6;">groupID</code><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">. &#1601;&#1610; &#1575;&#1604;&#1593;&#1605;&#1608;&#1583; &#1575;&#1604;&#1579;&#1617;&#1575;&#1604;&#1579; &#1610;&#1608;&#1580;&#1583; &#1605;&#1593;&#1585;&#1617;&#1601; &#1575;&#1604;&#1605;&#1580;&#1605;&#1608;&#1593;&#1577; &#1575;&#1604;&#1617;&#1578;&#1610; &#1610;&#1608;&#1580;&#1583; &#1575;&#1587;&#1605;&#1615;&#1607;&#1575; &#1601;&#1610; &#1575;&#1604;&#1593;&#1605;&#1608;&#1583; &#1575;&#1604;&#1571;&#1608;&#1617;&#1604;.</span>
</pre><p>&#1576;&#1575;&#1604;&#1606;&#1617;&#1587;&#1576;&#1577; &#1604;&#1571;&#1605;&#1585; <code>chmod</code> &#1601;&#1610; SFTP &#1601;&#1610;&#1593;&#1605;&#1614;&#1604; &#1576;&#1606;&#1601;&#1587; &#1591;&#1585;&#1610;&#1602;&#1577; &#1593;&#1605;&#1604;&#1607; &#1593;&#1604;&#1609; Shell.</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">chmod 777 publicFile
Changing mode on /home/demouser/publicFile
</pre><p><span style="line-height: 1.6;">&#1604;&#1575; &#1610;&#1608;&#1580;&#1583; &#1571;&#1605;&#1585; &#1601;&#1610; SFTP &#1604;&#1604;&#1578;&#1617;&#1581;&#1603;&#1617;&#1605; &#1601;&#1610; &#1571;&#1584;&#1608;&#1606;&#1575;&#1578; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1605;&#1581;&#1604;&#1617;&#1610;&#1548; &#1604;&#1603;&#1606; &#1610;&#1615;&#1605;&#1603;&#1606;&#1603; &#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1571;&#1605;&#1585; </span><code style="line-height: 1.6;">umask</code><span style="line-height: 1.6;"> &#1605;&#1581;&#1604;&#1617;&#1610;&#1617;&#1611;&#1575; &#1576;&#1581;&#1610;&#1579;&#1615; &#1578;&#1581;&#1589;&#1615;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1605;&#1606;&#1602;&#1608;&#1604;&#1577; &#1573;&#1604;&#1609; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1593;&#1604;&#1609; &#1575;&#1604;&#1571;&#1584;&#1608;&#1606;&#1575;&#1578; &#1575;&#1604;&#1605;&#1615;&#1606;&#1575;&#1587;&#1576;&#1577;.</span></p><p>&#1591;&#1585;&#1610;&#1602;&#1577; &#1575;&#1604;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1607;&#1610;&#1617;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">lumask 022
Local umask: 022</pre><p><span style="line-height: 1.6;">&#1587;&#1578;&#1581;&#1589;&#1615;&#1604; &#1580;&#1605;&#1610;&#1593; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1605;&#1615;&#1606;&#1586;&#1617;&#1614;&#1604;&#1577; &#1605;&#1606; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1575;&#1604;&#1570;&#1606; &#1593;&#1604;&#1609; &#1571;&#1584;&#1608;&#1606;&#1575;&#1578; 644&#1548; &#1605;&#1575; &#1604;&#1605; &#1610;&#1615;&#1587;&#1578;&#1582;&#1583;&#1614;&#1605; &#1582;&#1610;&#1617;&#1575;&#1585; </span><code style="line-height: 1.6;">P-</code><span style="line-height: 1.6;">.</span></p><p>&#1578;&#1578;&#1608;&#1601;&#1617;&#1585; &#1601;&#1610; SFTP &#1571;&#1610;&#1590;&#1611;&#1575; &#1573;&#1605;&#1603;&#1575;&#1606;&#1610;&#1617;&#1577; &#1573;&#1606;&#1588;&#1575;&#1569; &#1605;&#1615;&#1580;&#1604;&#1617;&#1583;&#1575;&#1578; &#1593;&#1604;&#1609; &#1603;&#1604;&#1617; &#1605;&#1606; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605;&#1610;&#1618;&#1606; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1608;&#1575;&#1604;&#1576;&#1593;&#1610;&#1583;&#1563; &#1610;&#1615;&#1572;&#1583;&#1617;&#1610; &#1571;&#1605;&#1585;&#1575; <code>lmkdir</code> &#1608; <code>mkdir</code> &#1593;&#1604;&#1609; &#1575;&#1604;&#1578;&#1617;&#1608;&#1575;&#1604;&#1610; &#1607;&#1575;&#1578;&#1610;&#1618;&#1606; &#1575;&#1604;&#1605;&#1607;&#1605;&#1617;&#1614;&#1578;&#1610;&#1618;&#1606;. &#1610;&#1593;&#1605;&#1604; &#1575;&#1604;&#1571;&#1605;&#1585;&#1575;&#1606; &#1576;&#1606;&#1601;&#1587; &#1591;&#1585;&#1610;&#1602;&#1577; &#1593;&#1605;&#1604; <code>mkdir</code> &#1593;&#1604;&#1609; Shell.<br>&#1578;&#1593;&#1605;&#1604; &#1576;&#1602;&#1610;&#1617;&#1577; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1593;&#1604;&#1609; &#1606;&#1592;&#1575;&#1605; &#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1582;&#1575;&#1583;&#1608;&#1605; &#1601;&#1602;&#1591;:</p><pre data-pbcklang="php" data-pbcktabsize="4" class="php ipsCode prettyprint">ln
rm
rmdir
</pre><pre><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">&#1578;&#1593;&#1605;&#1604; &#1607;&#1584;&#1607; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1576;&#1606;&#1601;&#1587; &#1603;&#1610;&#1601;&#1610;&#1617;&#1577; &#1593;&#1605;&#1604; &#1571;&#1608;&#1575;&#1605;&#1585; Shell &#1575;&#1604;&#1617;&#1578;&#1610; &#1578;&#1581;&#1605;&#1604; &#1606;&#1601;&#1587; &#1575;&#1604;&#1575;&#1587;&#1605;. &#1573;&#1584;&#1575; &#1571;&#1585;&#1583;&#1578;&#1614; &#1578;&#1606;&#1601;&#1610;&#1584; &#1607;&#1584;&#1607; &#1575;&#1604;&#1571;&#1608;&#1575;&#1605;&#1585; &#1593;&#1604;&#1609; &#1606;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1601;&#1578;&#1584;&#1603;&#1617;&#1585; &#1571;&#1606;&#1617;&#1607; &#1576;&#1573;&#1605;&#1603;&#1575;&#1606;&#1603; &#1575;&#1604;&#1575;&#1606;&#1578;&#1602;&#1575;&#1604; &#1573;&#1604;&#1609; &#1580;&#1604;&#1587;&#1577; Shell &#1593;&#1606; &#1591;&#1585;&#1610;&#1602; &#1571;&#1605;&#1585; </span><code style="line-height: 1.6;">!</code><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">.</span>
</pre><p>&#1610;&#1615;&#1605;&#1603;&#1606;&#1603; &#1603;&#1584;&#1604;&#1603; &#1578;&#1606;&#1601;&#1610;&#1584; &#1571;&#1605;&#1585; &#1608;&#1575;&#1581;&#1583; &#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1617;&#1592;&#1575;&#1605; &#1575;&#1604;&#1605;&#1581;&#1604;&#1617;&#1610; &#1593;&#1576;&#1585; &#1608;&#1590;&#1593; &#1593;&#1604;&#1575;&#1605;&#1577; <code>!</code> &#1571;&#1605;&#1575;&#1605;&#1607;&#1548; &#1593;&#1604;&#1609; &#1587;&#1576;&#1610;&#1604; &#1575;&#1604;&#1605;&#1579;&#1575;&#1604;:</p><pre data-pbcklang="php" data-pbcktabsize="" class="php ipsCode prettyprint">!chmod 644 somefile</pre><p>&#1575;&#1587;&#1578;&#1582;&#1583;&#1605; &#1571;&#1581;&#1583; &#1575;&#1604;&#1571;&#1605;&#1585;&#1610;&#1618;&#1606; <code>exit</code> &#1571;&#1608; <code>bye</code> &#1604;&#1573;&#1606;&#1607;&#1575;&#1569; &#1580;&#1604;&#1587;&#1577; SFTP.</p><pre data-pbcklang="php" data-pbcktabsize="" class="php ipsCode prettyprint">bye</pre><h2 id="&#1582;&#1575;&#1578;&#1605;&#1577;">&#1582;&#1575;&#1578;&#1605;&#1577;</h2><p>SFTP &#1605;&#1615;&#1601;&#1610;&#1583;&#1612; &#1580;&#1583;&#1617;&#1611;&#1575; &#1604;&#1603;&#1604;&#1617; &#1605;&#1614;&#1606; &#1610;&#1615;&#1585;&#1610;&#1583; &#1573;&#1583;&#1575;&#1585;&#1577; &#1575;&#1604;&#1582;&#1608;&#1575;&#1583;&#1610;&#1605; &#1608;&#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1576;&#1610;&#1606;&#1607;&#1575;. &#1573;&#1606; &#1603;&#1606;&#1578; &#1578;&#1587;&#1578;&#1582;&#1583;&#1605; FTP &#1571;&#1608; SCP &#1604;&#1606;&#1602;&#1604; &#1575;&#1604;&#1605;&#1604;&#1601;&#1617;&#1575;&#1578; &#1601;&#1573;&#1606;&#1617; SFTP &#1610;&#1615;&#1605;&#1579;&#1617;&#1616;&#1604; &#1571;&#1583;&#1575;&#1577;&#1611; &#1610;&#1615;&#1605;&#1603;&#1606;&#1607;&#1575; &#1575;&#1604;&#1580;&#1605;&#1593; &#1576;&#1610;&#1606; &#1606;&#1602;&#1575;&#1591; &#1575;&#1604;&#1602;&#1608;&#1617;&#1577; &#1601;&#1610; &#1575;&#1604;&#1575;&#1579;&#1606;&#1610;&#1618;&#1606;.<br>&#1593;&#1604;&#1609; &#1575;&#1604;&#1585;&#1617;&#1594;&#1605; &#1605;&#1606; &#1571;&#1606;&#1617; SFTP &#1604;&#1575; &#1610;&#1615;&#1606;&#1575;&#1587;&#1576; &#1603;&#1604;&#1617; &#1581;&#1575;&#1604;&#1575;&#1578; &#1575;&#1604;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1573;&#1604;&#1617;&#1575; &#1571;&#1606;&#1617; &#1605;&#1585;&#1608;&#1606;&#1578;&#1614;&#1607; &#1578;&#1580;&#1593;&#1604; &#1605;&#1606;&#1607; &#1571;&#1583;&#1575;&#1577;&#1611; &#1610;&#1580;&#1576; &#1571;&#1606; &#1578;&#1578;&#1608;&#1601;&#1617;&#1585; &#1604;&#1583;&#1609; &#1603;&#1604; &#1605;&#1583;&#1610;&#1585; &#1571;&#1606;&#1592;&#1605;&#1577;.</p><p>&#1578;&#1585;&#1580;&#1605;&#1577; - &#1576;&#1578;&#1589;&#1585;&#1617;&#1601; - &#1604;&#1605;&#1602;&#1575;&#1604; <a rel="external nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server">How To Use SFTP to Securely Transfer Files with a Remote Server</a>.</p>
]]></description><guid isPermaLink="false">30</guid><pubDate>Sun, 19 Apr 2015 12:15:00 +0000</pubDate></item><item><title>&#x645;&#x642;&#x62F;&#x645;&#x629; &#x625;&#x644;&#x649; &#x623;&#x630;&#x648;&#x646;&#x627;&#x62A; &#x644;&#x64A;&#x646;&#x643;&#x633; Linux Permissions</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A3%D8%B0%D9%88%D9%86%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-permissions-r25/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_04/linux-permissions_480x300.png.7e544683f6785981265136052cdcc8f2.png" /></p>

<p dir="rtl">
	لينكس هو نظام تشغيلٍ متعدد المستخدمين مبني على مفاهيم يونكس (Unix) لملكيّة الملفّّات والأذونات (permissions) بهدفِ توفير حمايةٍ أفضل. إذا كنتَ تخطط لتحسين مهاراتك بلينكس فيجب عليك أن تمتلك فهمًا جيدًا لكيفية عمل ملكية الملفّّات والأذونات في لينكس. هناك العديد من التعقيدات عند التعامل مع ملكية الملفّّات والأذونات، لكننا سنحاول جهدنا لاستخلاص المفاهيم الأساسية المهمّة لفهم كيفية عملها
</p>

<p dir="rtl">
	سنتطرّق إلى كيفية عرض وفهم ملكية الملفّّات والأذونات في لينكس. إذا كنتَ تبحث عن دليلٍ حول كيفية تعديل الأذونات، فاطّلع على هذا الدّرس: <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A8%D8%A7%D8%AF%D8%A6-%D8%A3%D8%B0%D9%88%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-file-permissions-%D8%B9%D9%84%D9%89-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r242/" rel="">مبادئ أذونات الملفات (File permissions) على لينكس</a>.
</p>

<h2 dir="rtl">
	المتطلبات
</h2>

<p dir="rtl">
	تأكّد من أنّك تفهم المفاهيم التي تم تغطيتها بالدروس السابقة في هذه السلسلة:
</p>

<ul>
<li>
		<p dir="rtl">
			<a href="http://academy.hsoub.com/devops/linux/-r18/" rel="">مقدّمة إلى طرفية لينكس</a>.
		</p>
	</li>
	<li>
		<p dir="rtl">
			<a href="http://academy.hsoub.com/devops/linux/-r24/" rel="">أساسيات التصفّح في لينكس وإدارة الملفّّات</a>.
		</p>
	</li>
</ul>
<h2 dir="rtl">
	حول المستخدمين
</h2>

<p dir="rtl">
	كما ذكرنا في المقدّمة، لينكس هو نظام متعدد المستخدمين. يجب علينا أن نفهم أساسيات مستخدمي ومجموعات نظام لينكس قبل الحديث عن ملكية الملفّّات والأذونات، لأنهما الكيانان اللذان ينطبق عليهما ملكية الملفّّات والأذونات. فلنبدأ بالحديث عن أساسيات ماهيّة المستخدمين أولًا.
</p>

<p dir="rtl">
	في لينكس، هناك نوعان من المستخدمين: مستخدمو النظام (system users) والمستخدمون العاديون (regular users)، بشكلٍ عام، مستخدمو النظام يتم استخدامهم لتشغيل العمليات غير التفاعلية (non-interactive processes) والعمليات التي تعمل بالخلفية (background processes) على النظام، بينما يتم استخدام المستخدمين العاديين لتسجيل الدخول إلى النظام وتشغيل العمليات التفاعلية. عندما تقوم بالولوج لأول مرّة إلى أيّ نظام لينكس، قد تلاحظ أن النظام يبدأ مع عدّة مستخدمين للنظام حيث يقوم هؤلاء المستخدمون بتشغيل الخدمات التي يعتمد عليها نظام التشغيل، وهذا الأمر طبيعي تمامًا.
</p>

<p dir="rtl">
	من الطرق السهلة لعرض جميع المستخدمين المتوفّرين على النظام هي عرض محتويات ملفّّ <span style="font-family:courier new,courier,monospace;">etc/passwd/</span>. كلّ سطر في هذا الملفّّ يحتوي معلوماتٍ حول مستخدمٍ واحد، بدءً باسم المستخدم الخاص به (الاسم قبل إشارة ":” الأولى). يمكنك طباعة محتويات ملفّّ <span style="font-family:courier new,courier,monospace;">passwd </span>عن طريق الأمر التالي:
</p>

<pre class="php ipsCode prettyprint prettyprinted" data-pbcklang="php" data-pbcktabsize="4">
<span class="pln">cat </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">passwd</span></pre>

<h2 dir="rtl">
	المستخدم الجذر
</h2>

<p dir="rtl">
	بالإضافة إلى النوعين السابقين للمستخدمين، هناك "المستخدم الجذر" أو ما يعرف بـSuperuser أو root user، وهو يمتلك القدرة على الكتابة فوق أي تقييدات لأذونات ملكية الملفّّات أو تعديلها. بشكلٍ آخر، هذا يعني أن المستخدم الجذر يمتلك القدرة على الوصول إلى أيّ شيءٍ على خادومه الخاص. حيث يتم استخدام هذا المستخدم لتطبيق التغييرات المتعلقة بالنظام بأكمله، ويجب إبقاء هذا المستخدم آمنًا.
</p>

<p dir="rtl">
	من الممكن أيضًا أن يتم إعداد حسابات مستخدمين آخرين تمتلك صلاحيات "المستخدم الجذر". في الواقع، من أفضل التدربيات الممكن القيام بها هو إنشاء مستخدمٍ عادي يمتلك صلاحيات <span style="font-family:courier new,courier,monospace;">sudo</span> لإدارة مهام النظام.
</p>

<h2 dir="rtl">
	حول المجموعات
</h2>

<p dir="rtl">
	المجموعات هي تجميعات لـ0 مستخدمين أو أكثر. ينتمي المستخدم عادةً إلى المجموعة الافتراضية ويمكن أيضًا أن يكون عضوًا في أيٍّ من المجموعات الأخرى على الخادوم.
</p>

<p dir="rtl">
	من الطرق السهلة لعرض جميع المجموعات المتوفّرة على الخادوم والأعضاء بداخلها هي الاطّلاع على ملفّّ<span style="font-family:courier new,courier,monospace;"> etc/group/</span>. لن نغطّي أساسيات إدارة المجموعات في هذا المقال، ولكن يمكنك تطبيق هذا الأمر في حال كنتَ فضوليًا عن مجموعاتك:
</p>

<pre class="php ipsCode prettyprint prettyprinted" data-pbcklang="php" data-pbcktabsize="4">
<span class="pln">cat </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="kwd">group</span></pre>

<p dir="rtl">
	الآن صرتَ تعرف ماهيةَ المستخدمين والمجموعات، فلنتحدّث عن ملكية الملفّّات والأذونات.
</p>

<h2 dir="rtl">
	عرض ملكية الملفات والأذونات
</h2>

<p dir="rtl">
	في لينكس، كلّ الملفّّات تعتبر مملوكة من طرف مستخدمٍ واحد ومجموعةٍ واحدة، وكلّ ملفٍّّ يمتلك أذونات الوصول الخاصة به. فلنأخذ لمحة على كيفية عرض أذونات الملفّّات وملكيّتها.
</p>

<p dir="rtl">
	الطريقة الأكثر شيوعًا لعرض أذونات ملفٍّّ ما هي باستخدام الأمر <span style="font-family:courier new,courier,monospace;">ls</span> مع خيار السرد الطويل (long listing option)، كمثال: <span style="font-family:courier new,courier,monospace;">ls -l myfile</span> . إذا كنتَ تريد عرض أذونات جميع الملفّّات الموجودة في مسارك الحالي، فقم باستخدام الأمر بدون أيّ معامِلات مثل:
</p>

<pre class="php ipsCode prettyprint prettyprinted" data-pbcklang="php" data-pbcktabsize="4">
<span class="pln">ls </span><span class="pun">-</span><span class="pln">l</span></pre>

<p dir="rtl">
	تلميح: إذا كنتَ في مسار المنزل الخاص بك وكان فارغًا، ولم تقم بإنشاء أي ملفّّات لعرضها بعد، فيمكنك متابعة العملية عن طريق سرد محتويات المسار <span style="font-family:courier new,courier,monospace;">etc/</span> باستخدام هذا الأمر: <span style="font-family:courier new,courier,monospace;">ls -l /etc</span>
</p>

<p dir="rtl">
	بالأسفل تجدُ مثالًا على لقطة شاشة لِمَا يُمكن للخرج أن يكون، مع تسميات كلِّ عمودٍ من الخرج:
</p>

<p dir="rtl" style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_04/ls-l_001.png.a2ba1a7be6c95dff0cbb45bd3d9f37b4.png" rel="external" data-fileid="1067"><img class="ipsImage ipsImage_thumbnailed" data-fileid="1067" src="https://academy.hsoub.com/uploads/monthly_2015_04/ls-l_001.thumb.png.7686264c1566a8f317dd12e71acc8d6f.png" alt="ls-l_001.png"></a>
</p>

<p dir="rtl">
	لاحظ أنّه يتم سرد وضع كلّ ملفّّ، المالك، المجموعة والاسم الخاصّين به. باستثناء عمود وضع الملفّّ (file's mode) فإنّه من السهل فهم جميع أجزاء الخرج. للمساعدة في شرح جميع هذه الحروف والرموز، فلنقم بتقسيم عمود الوضع (Mode column) إلى مكوناته الأساسية.
</p>

<h2 dir="rtl">
	فهم وضع الملفات
</h2>

<p dir="rtl">
	للمساعدة في فهم ما تعنيه تلك الحروف والرموز، ألقِ نظرة على هذه الصورة التوضيحية التي تشرح ماهية "الوضع" أو الـ"mode” الخاص بأول ملفٍّّ من المثال أعلاه:
</p>

<p dir="rtl" style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_04/mode_002.png.bd8843cf9b3d166bfd153e2f71fed982.png" rel="external" data-fileid="1068"><img class="ipsImage ipsImage_thumbnailed" data-fileid="1068" src="https://academy.hsoub.com/uploads/monthly_2015_04/mode_002.thumb.png.09b1a4e1348f1196c6aa274668ad0819.png" alt="mode_002.png"></a>
</p>

<h2 dir="rtl">
	نوع الملفات
</h2>

<p dir="rtl">
	في لينكس، هناك نوعان أساسيان من الملفّّات: عادي وخاص. يتم تحديد نوع الملفّّ عن طريق أول حرفٍ من الوضع الخاص به. في هذا الدليل سنشير إلى هذا عن طريق استخدام مصطلح "حقل نوع الملفّّ".
</p>

<p dir="rtl">
	يُمكن أن يتم التعرف على الملفّّات العادية عن طريق شَرْطَة hyphen ( - ) في حقل نوع الملفّّ الخاص بها. الملفَّّات العادية هي مجرد ملفَّّات صرّفَة تحتوي على بيانات. يتم تسميتها بالملفّّات "العادية" لتمييزها عن الملفّّات الخاصة.
</p>

<p dir="rtl">
	الملفّاّت الخاصّة هي الملفّات التي تمتلك محرف غير شَرْطَي (non-hyphen character) مثل الحروف العادية في حقل نوع الملفّ الخاصة بها، ويتم معاملتها من جانب نظام التشغيل بطريقةٍ مختلفة عن الملفّاّت المحلّية. المحرف الذي يظهر في حقل نوع الملفّ يحدّد نوع الملفّ الخاص. مثل المجلّدات (folders)، وهي الملفّاّت الخاصة الأكثر شيوعًا من بين الملفّاّت الخاصّة. يتم التعرّف على المجلّدات عن طريق محرف d الذي يظهر في حقل نوع الملفّ الخاصّ بالمجلّد (مثل لقطة الشاشة السابقة). هناك أنواعٌ أخرى من الملفّاّت الخاصّة ولكنّها ليست أساسية لِمَا سنتعلّمه هنا.
</p>

<h2 dir="rtl">
	أصناف الأذونات
</h2>

<p dir="rtl">
	نعلمُ من الرسم البياني السابق أنّ عمود الوضع يحدد نوع الملفّّ، متبوعًا بثلاثة أصناف (classes) من الأذونات: المستخدم (المالك)، المجموعة والآخرون. ترتيب هذه الأصناف ثابت على جميع توزيعات لينكس.
</p>

<p dir="rtl">
	فلنلقِ نظرة على الأصناف التي ينتمي إليها كلّ نوعٍ من المستخدمين:
</p>

<ul dir="rtl">
<li>
		<strong>المستخدم (User)</strong>: مالك الملفّ (owner) ينتمي إلى هذا الصنف.
	</li>
	<li>
		<strong>المجموعة (Group)</strong>: أعضاء مجموعة الملفّ ينتمون إلى هذا الصنف.
	</li>
	<li>
		<strong>الآخرون (Other)</strong>: أيُّ مستخدمين آخرين ليسوا جزءًا من صنفيّ المستخدم أو المجموعة فهم ينتمون إلى هذا الصنف.
	</li>
</ul>
<h2 dir="rtl">
	قراءة الأذونات الرمزية
</h2>

<p dir="rtl">
	الشيء التالي الذي من الواجب الاهتمام به هو تشكيلة المحارف الثلاثة الخاصّة بوضع الملفّ، لأنها هي التي تقوم بتحديد الأذونات الخاصّة بالملفّ، بشكلٍ رمزي (symbolic) يمتلكها كل ملفّ.
</p>

<p dir="rtl">
	يتم تمثيل أذونات الكتابة، القراءة والتنفيذ في كلِّ تشكيلةٍ ثلاثية (triad) على النحو التالي:
</p>

<ul dir="rtl">
<li>
		<strong>القراءة</strong>: يتم تمثيلها بحرف <span style="font-family:courier new,courier,monospace;">r</span> بالموقع الأول.
	</li>
	<li>
		<strong>الكتابة</strong>: يتم تمثيلها بحرف <span style="font-family:courier new,courier,monospace;">w</span> بالموقع الثاني.
	</li>
	<li>
		<strong>التنفيذ</strong>: يتم تمثيله بحرف <span style="font-family:courier new,courier,monospace;">x</span> بالموقع الثالث. في بعض الحالات الخاصّة، يمكن أن يكون هناك حرفٌ آخر هنا.
	</li>
</ul>
<p dir="rtl">
	عندما يتم وضع شَرْطَة ( <span style="font-family:courier new,courier,monospace;">-</span> ) في أي موقعٍ من هذه المواقع، فهذا يعني الإذن المعين ذاك ليس متوفرًا لهذا الصنف. كمثال: إذا كانت التشكيلة الثلاثية للمجموعة المالكة لملفٍّ معين هي: <span style="font-family:courier new,courier,monospace;">--r</span> ، فهذا يعني أن الملفّ هو قابل للقراءة فقط لتلك المجموعة المتصلة بالملفّ.
</p>

<h2 dir="rtl">
	فهم قراءة، كتابة وتنفيذ الملفات
</h2>

<p dir="rtl">
	الآن صرتَ قادرًا على قراءة الأذونات الخاصّة بكلّ ملفّّ، وعلى الأرجح فإنّك الآن تريد معرفة مالذي يسمح كلّ نوعٍ من أنواع الأذونات للمستخدمين أن يفعلوا. سوف سنشرح كلّ إذنٍ بشكلٍ منفصل، ولكن عليك أن تتذكر أنّه غالبًا ما يتمُ استخدام خليط من هذه الأذونات مع بعضها البعض للسماح بوصولٍ معين إلى هذه الملفّات والمسارات من قبل المستخدمين.
</p>

<p dir="rtl">
	إليك شرحًا بسيطًا إلى نوع الوصول الذي يمنحه كلٌّ نوعٍ من الأذونات للمستخدمين.
</p>

<h3 dir="rtl">
	1- القراءة
</h3>

<p dir="rtl">
	يسمحُ إذن القراءة لملفٍّ عادي أن يتم عرضه من قبل المستخدم لمشاهدة محتويات الملفّ. لمجلد أو مسار، يسمح إذن القراءة لمستخدمٍ أن يقوم بعرض أسماء الملفّات الموجودة بتلك المجلدات أو المسارات.
</p>

<h3 dir="rtl">
	2- الكتابة
</h3>

<p dir="rtl">
	يسمحُ إذن الكتابة لملفٍّ عادي أن يتم تعديله أو حذفه من قبل المستخدم. لمجلدٍ أو مسار، يسمح إذن الكتابة بأن يتم حذف المجلد أو المسار وتعديل محتوياته (إنشاء، حذف وإعادة تسمية الملفّات الموجودة بداخله) وتعديل محتويات الملفّات التي يمكن قراءتها من قبل المستخدم.
</p>

<h3 dir="rtl">
	3- التنفيذ
</h3>

<p dir="rtl">
	يسمح إذن الكتابة بأن يتم تنفيذ ملفٍّ من قبل المستخدم (يجب على المستخدم أن يمتلك إذن القراءة أيضًا). أذونات التنفيذ يجب أن يتم إعطاؤها للبرامج التنفيذية وسكربتات الشلّ (shell scripts) قبل أن يتمكّن المستخدم من تشغيلها. لمجلدٍ أو لمسار، يسمح إذن التنفيذ بالوصول إلى البيانات الوصفية (metadata) الخاصة بالملفّات الموجودة بداخله (مثل الأمر <span style="font-family:courier new,courier,monospace;">cd</span> أو <span style="font-family:courier new,courier,monospace;">ls -l</span>).
</p>

<h2 dir="rtl">
	أمثلة على أوضاع الملفّات والأذونات
</h2>

<p dir="rtl">
	الآن وبعدما صرتَ قادرًا على قراءة وضع الملفّات وفهم معنى إذنِ كلِ واحدٍ منها، فسوف نتطرّق إلى بضعة أمثلة لأوضاعٍ شائعة للملفّات مع شرحٍ بسيط حولها:
</p>

<ul dir="rtl">
<li>
		<span style="font-family:courier new,courier,monospace;">-rw-------</span>: تمثّل ملفًّا قابلًا للوصول فقط من قبل مالكه.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;">-rwxr-xr-x</span>: تمثّل ملفًّا قابلًا للتنفيذ من قبل جميع المستخدمين على النظام.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;">-rw-rw-rw-</span>: تمثّل ملفًّا قابلًا للتعديل من قبل جميع المستخدمين على النظام.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;">drwxr-xr-x</span>: تمثّل مسارًا يمكن لجميع المستخدمين على النظام الوصول إليه وقراءته.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;">drwxrwx---</span>: تمثّل مسارًا قابلًا للتعديل (بالإضافة إلى محتوياته) من قبل مالكه والمجموعة التي ينتمي إليها.
	</li>
	<li>
		<span style="font-family:courier new,courier,monospace;">drwxr-x---</span>: تمثّل مسارًا يمكن الوصول إليه من قبل مجموعته.
	</li>
</ul>
<p dir="rtl">
	كما تلاحظ، عادةً، مالك الملفّ يتمتّع بغالب الأذونات الخاصة بالملفّ مقارنةً مع الصنفين الآخرين. عادةً، سترى أنّ صنفيّ "المجموعة" و "الآخرون" يمتلكان أذونات فرعية فقط من أذونات مالك الملفّ (مساوية لها أو أقل). هذا أمرٌ منطقي لأن الملفّات يجب أن تكون قابلة للوصول فقط من طرف المستخدمين الذين يحتاجون الوصول إليه لسببٍ معيّن.
</p>

<p dir="rtl">
	شيءٌ آخر لملاحظته هو أنّه وعلى الرغم من أنّه هناك العديد من تشكيلات الأذونات الممكنة، فإنّ عددًا محدودًا منها فقط قد يكون استخدامها منطقيًا في حالاتٍ معيّنة. كمثال فإنّ أُذنيّ الكتابة والتنفيذ غالبًا ما يتم إلحاقهما بإذن القراءة، لأنّه سيكون من الصعب تعديل، ومن المستحيل تنفيذ ملفٍّ لا تستطيع قراءته.
</p>

<h2 dir="rtl">
	تعديل ملكية الملفات والأذونات
</h2>

<p dir="rtl">
	للإبقاء على هذا الدليل بأبسط ما يمكن، لن نتطرف إلى كيفية تعديل ملكيّة الملفّات والأذونات هنا.
</p>

<h2 dir="rtl">
	الخاتمة
</h2>

<p dir="rtl">
	يجب أن تكون الآن قد امتلكت معرفة جيّدة حول كيفية عمل ملكيّة الملفّات والأذونات في نظام لينكس. إذا كنتَ تحبّ تعلم المزيد عن أساسيات لينكس، فمن المستحسن بشدّة أن تقوم بقراءة الدّرس القادم من هذه السّلسلة والذي سيكون حول إعادة توجيه الإدخال/الإخراج في لينكس.
</p>

<p dir="rtl">
	<span style="line-height: 1.6;">ترجمة -وبتصرّف- للمقال: </span><a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions" rel="external nofollow" style="line-height: 1.6;">An Introduction to Linux Permissions</a><span style="line-height: 1.6;">.</span>
</p>
]]></description><guid isPermaLink="false">25</guid><pubDate>Tue, 07 Apr 2015 12:23:00 +0000</pubDate></item><item><title>&#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x625;&#x62F;&#x627;&#x631;&#x629; &#x627;&#x644;&#x645;&#x644;&#x641;&#x651;&#x627;&#x62A; &#x648;&#x627;&#x644;&#x62A;&#x646;&#x642;&#x651;&#x644; &#x641;&#x64A; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D9%84%D9%81%D9%91%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%91%D9%84-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r24/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_04/ls.png.1cdd3f400586976650af877f471bbb72.png" /></p>
<h2 dir="rtl">
	مقّدمة
</h2>

<p dir="rtl">
	إذا كنتَ لا تمتلك خبرةً كبيرة في التعامل مع أنظمة لينكس، فربّما تكون مندهشًا من فكرة التحكّم بنظام التشغيل عبر سطر الأوامر. هنا، سنحاول شرح أساسيات فعلِ ذلك.
</p>

<p dir="rtl">
	لن يغطّي هذا <span style="line-height: 17.9200000762939px;">الدّرس</span> كل شيءٍ تحتاج معرفته للتعامل بفعالية مع نظام لينكس. ولكنّ من المفترض أن يعطيك أساسًا جيدًا للارتكاز عليه لكي تتمكن من استكشاف بقية الأمور بنفسك. سيُعطيك هذا <span style="line-height: 17.9200000762939px;">الدّرس</span> الأساسيات التي تحتاج أن تعرفها فقط قبل الانتقال إلى دليلٍ آخر.
</p>

<h2 dir="rtl">
	المتُطلّبات والأهداف
</h2>

<p dir="rtl">
	من أجل المتابعة مع هذا <span style="line-height: 17.9200000762939px;">الدّرس</span>، ستحتاج إلى امتلاك الوصول إلى خادوم لينكس. إذا كنتَ تحتاج معلوماتٍ حول كيفية الاتصال بخادومك للمرّة الأولى، <a href="https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-ssh" rel="external nofollow">فيمكنك اتّباع هذا الدّرس حول كيفية الاتّصال بخادوم لينكس باستخدام </a><a href="https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-ssh" rel="external nofollow"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></a>.
</p>

<p dir="rtl">
	قد تودُّ أيضًا امتلاك أساسيات فهم كيفية عمل الطرفيّة وكيف تبدو الأوامر في نظام لينكس. <a href="https://academy.hsoub.com/devops/linux/-r18/" rel="">درسنا السابق هذا يغطّي أساسيات الطرفيّة</a>، لذا فيجب عليك التحقق منه إذا كنتَ جديدًا على استخدام الطرفيّات.
</p>

<p dir="rtl">
	جميع المهام الموجودة في هذا الدّرس يُمكن إنجازها باستخدام حساب مستخدم عادي غير جذر (non-root) لا يمتلك صلاحياتٍ إدارية (حيث أننا لن نحتاجها).
</p>

<p dir="rtl">
	عندما تصبحُ جاهزًا للبدء، اتّصل بخادومك عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> وتابع القراءة.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h2 dir="rtl">
	التنقّل والاستكشاف
</h2>

<p dir="rtl">
	أهمّ المهارات الأساسية التي يجب عليك احترافها هي التنقّل في نظام الملفّات (filesystem) والحصول على فكرة عن الأشياء حولك. سنناقش الأدوات التي تسمح لك بفعل ذلك في هذا القسم.
</p>

<h3 dir="rtl">
	معرفة مكانك باستخدام الأمر <span style="font-family:courier new,courier,monospace;">pwd</span>
</h3>

<p dir="rtl">
	عندما تقوم بتسجيل الدخول إلى خادومك، فإنّه سيتم إرسالك عادةً إلى مجلّد المنزل (home directory) الخاص بحساب المستخدم الذي تستعمله. مجلّد المنزل هو عبارة عن مسارٍ مُعَدّ لمستخدمك لتخزين الملفات والمجلّدات. إنّه الموقع الذي تمتلك كامل السيطرة عليه في نظام الملفات.
</p>

<p dir="rtl">
	لمعرفة موقع مجلّد المنزل الخاص بك بالنسبة إلى بقيّة نظام الملفّات، يمكنك استخدام الأمر pwd. يقوم هذا الأمر بعرض المسار الذي نتواجدُ فيه حاليًا:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">pwd</pre>

<p dir="rtl">
	يجبُ أن تحصل على بعض المعلومات التي تبدو هكذا:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">/home/demo</pre>

<p dir="rtl">
	يتم تسمية مجلّد المنزل باسم المستخدم الذي يتبعُه، لذا ففي المثال السابق تلاحظ ما ستكون قيمة اسم مجلّد المنزل عندما تقوم بتسجيل الدخول إلى الخادوم باستخدام حسابٍ يُدعى <span style="font-family:courier new,courier,monospace;">demo</span> . هذا المسار موجود داخل مجلد يُدعى <span style="font-family:courier new,courier,monospace;">/home</span> ، والذي هو بدوره ضمن مسارٍ أعلى يدعى "الجذر (root)” ولكن يتم تمثيله بإشارة <span style="font-family:courier new,courier,monospace;">/</span> واحدة.
</p>

<h3 dir="rtl">
	معرفة محتوى المجلّدات باستخدام <span style="font-family:courier new,courier,monospace;">ls</span>
</h3>

<p dir="rtl">
	الآن صرتَ تعرف كيفية عرض المسار الذي تتواجدُ فيه حاليًا، يمكننا الآن أن نعلّمك كيفية عرض محتويات مسارٍ معيّن.
</p>

<p dir="rtl">
	حاليًا، لا يمتلك مجلّد المنزل الخاص بك الذي رأيناه بالأعلى الكثير من الأمور بداخله لرؤيتها، لذلك سننتقل إلى مسارٍ أكثر امتلاءً بالملفّات لنستكشفه. قمّ بكتابة الأمر التالي في طرفيّتك للانتقال إلى هذا المسار (سنشرح تفاصيل الانتقال إلى مساراتٍ أخرى في القسم التالي). بعدها، سنستخدم الأمر <span style="font-family:courier new,courier,monospace;">pwd</span> للتأكّد مما إذا كنّا قد انتقلنا بنجاح:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd /usr/share

pwd

</pre>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">/usr/share</pre>

<p>
	<span style="line-height: 1.6;">الآن أصبحنا في المسار الجديد، فلنلقي نظرةً على ما يوجد بداخله. لفعل هذا، يُمكننا استخدام الأمر ls:</span>
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">ls</pre>

<p>
	 
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">adduser            groff                          pam-configs
applications       grub                           perl
apport             grub-gfxpayload-lists          perl5
apps               hal                            pixmaps
apt                i18n                           pkgconfig
aptitude           icons                          polkit-1
apt-xapian-index   info                           popularity-contest
. . .

</pre>

<p>
	كما ترى، هناك العديد من العناصر بداخل هذا المسار. يمكننا إضافة بعض الأعلام الإضافية (flags) للأمر السابق للتعديل على سلوكه الافتراضي. كمثال، لسرد جميع المحتويات بشكلٍ أكثر تفصيلًا، سنستخدم العَلَم -l (اختصار لـlong output):
</p>

<p>
	 
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">ls -l</pre>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="">total 440
drwxr-xr-x   2 root root  4096 Apr 17  2014 adduser
drwxr-xr-x   2 root root  4096 Sep 24 19:11 applications
drwxr-xr-x   6 root root  4096 Oct  9 18:16 apport
drwxr-xr-x   3 root root  4096 Apr 17  2014 apps
drwxr-xr-x   2 root root  4096 Oct  9 18:15 apt
drwxr-xr-x   2 root root  4096 Apr 17  2014 aptitude
drwxr-xr-x   4 root root  4096 Apr 17  2014 apt-xapian-index
drwxr-xr-x   2 root root  4096 Apr 17  2014 awk
. . .</pre>

<p dir="rtl">
	هذه الرؤيا تعطينا الكثير من المعلومات التي لم نعتد غالبًا على رؤيتها. تصف الكتلة الأولى (block) نوع الملفّ (إذا كان العمود الأول هو حرف "<span style="font-family:courier new,courier,monospace;">d</span>” فحينها فالعنصر هو مجلّد، وإذا كان إشارة "-” فحينها يكون العنصر ملفًا عاديًا) والأذونات. يصفُ كلُّ عمودٍ منفصل مفصولٍ بمساحةٍ بيضاء عن غيره عددًا من المعلومات المختلفة مثل مالك الملفّ، المجموعة، حجم العنصر، تاريخ آخر تعديل واسم العنصر. سنقوم بتفصيل بعضٍ من هذه الأمور لاحقًا، ولكن الآن، يكفي أن تعرف أنّه بإمكانك عرض هذه المعلومات باستخدام عَلَم <span style="font-family:courier new,courier,monospace;">-l</span> مع الأمر <span style="font-family:courier new,courier,monospace;">ls</span>.
</p>

<p dir="rtl">
	لسرد جميع الملفّات بما في ذلك الملفّات المخفيّة، فسيجب عليك إضافة العَلَم -a . بما أنّه لا يوجد هناك ملفّات مخفية حقًا في المسار <span style="font-family:courier new,courier,monospace;">/usr/share</span> ، فسيجب علينا الرجوع إلى مجلّد المنزل الخاص بنا لتجربة ذلك الأمر. يمكنك الرجوع إلى مجلّد المنزل عبر كتابة الأمر cd دون أي مُعطيات:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd
ls -a
</pre>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">.  ..  .bash_logout  .bashrc  .profile
</pre>

<pre><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 1.6;">كما يمكنك أن ترى، هناك العديد من الملفّات المخفية في هذا المكان بالإضافة إلى كلٍ من . و .. واللذان يعتبران حرفين من نوعٍ خاص في نظام لينكس. ستجد غالبًا أنّه يتم تخزين ملفات الإعداد كملفات مخفيّة، كما في حالتنا هنا.</span>
</pre>

<p dir="rtl">
	بالنسبة إلى إشارة النقطة والنقطتين، فهما ليسا مجلّدين بالضبط، بل هما عبارة عن طريقة داخلية (method) للإشارة إلى مساراتٍ أخرى مرتبطة بالمسار الحالي. النقطة الواحدة تُشير إلى المسار الحالي، والنقطتان تشير إلى المسار الأبّ (parent directory) للمسار الحالي. سنشرح هذا الأمر في القسم التالي.
</p>

<h3 dir="rtl">
	التنقّل في نظام الملفّات باستخدام <span style="font-family:courier new,courier,monospace;">cd</span>
</h3>

<p dir="rtl">
	لقد قمنا بالانتقال بالفعل عبر مسارين مختلفين لتوضيح بعض خصائص <span style="font-family:courier new,courier,monospace;">ls</span> في القسم السابق. فلنلقي جولةً أفضل على ذلك الأمر هنا.
</p>

<p dir="rtl">
	 
</p>

<p dir="rtl">
	ابدأ عبر الرجوع إلى المسار <span style="font-family:courier new,courier,monospace;">/usr/share</span> عبر كتابة التالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd /usr/share</pre>

<p dir="rtl">
	هذا مثالٌ لتغيير المسار الحالي عبر استخدام ما يعرف بالمسار المُطلق (absolute path). في لينكس، جميع الملفّات المجلّدات تقع تحت المسار الأكثر علوًا (top-most directory)، والذي ندعوه بمجلّد الجذر (root directory)، ولكن يُشار إليه بإشارة / واحدة. يقوم المسار المُطلق بتحديد موقع مجلّدٍ معيّن بالنسبة إلى هذا المسار الأكثر علوًا (مجلّد الجذر /). يسمحُ لنا هذا بالإشارة بطريقةٍ غير معقّدة إلى أيّ مكانٍ في نظام الملفّات. أيُّ مسارٍ مُطلق يجب أن يبدأ بإشارة / .
</p>

<p dir="rtl">
	الخيار البديل هو استخدام ما يُعرف بالمسارات المُرتبطة (relative paths). تقوم المسارات المُرتبطة بالإشارة إلى المسارات الموجودة على نظام الملفّات بالنسبة إلى المسار الحالي. هذه الطريقة عادةً تكون أسهل وأقصر بالنسبة إلى المسارات القريبة من المسار الحالي في شجرة الملفّات. يُمكن الإشارة إلى أيّ مسارٍ موجود ضمن المسار الحالي عبر تسميته دون الحاجة لإشارة <span style="font-family:courier new,courier,monospace;">/</span> . يُمكننا الانتقال إلى المجلّد locale الموجود ضمن <span style="font-family:courier new,courier,monospace;">/usr/share</span> (والذي هو مسارنا الحالي) عبر كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd locale</pre>

<p dir="rtl">
	يُمكننا أيضًا القفز خطوتين بدل خطوةٍ واحدة والانتقال إلى مسارٍ داخل مسارٍ آخر عبر توفير الجزء الثاني (الذي هو اسم المجلّد الثاني الذي سننتقل إليه) ووضعه بعد المسار الأول. كمثال، يُمكننا الوصول إلى المجلّد <span style="font-family:courier new,courier,monospace;">LC_MESSAGES</span> الموجود داخل المجلّد <span style="font-family:courier new,courier,monospace;">en</span> عبر كتابة الأمر التالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd en/LC_MESSAGES</pre>

<p dir="rtl">
	للرجوع إلى أعلى، وللانتقال إلى المسار الأب للمسار الحالي، يُمكننا استخدام حرف النقطتين الخاص .. الذي تحدّثنا عنه من قبل. كمثال، نحن الآن في المسار <span style="font-family:courier new,courier,monospace;">/usr/share/locale/en/LC_MESSAGES</span> . للانتقال إلى أعلى بدرجةٍ واحدة، يمكننا أن نكتب:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd ..</pre>

<p dir="rtl">
	سيأخذنا هذا الأمر إلى المسار <span style="font-family:courier new,courier,monospace;">/usr/share/locale/en</span> .
</p>

<p dir="rtl">
	من الاختصارات التي رأيتها بالسابق هو استخدام الأمر <span style="font-family:courier new,courier,monospace;">cd</span> للرجوع إلى مجلّد المنزل الخاص بك بسرعة دون الحاجة لتوفير مساره المعيّن:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd
pwd
</pre>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">/home/demo</pre>

<p dir="rtl">
	لتعلّم المزيد حول كيفية استخدام هذه الأوامر الثلاثة، يمكنك مراجعة <a href="https://www.digitalocean.com/community/tutorials/how-to-use-cd-pwd-and-ls-to-explore-the-file-system-on-a-linux-server" rel="external nofollow">هذا الدّرس حول استكشاف نظام الملفّات في نظام لينكس</a>.
</p>

<h2 dir="rtl">
	عرض الملفّات
</h2>

<p dir="rtl">
	في القسم الأخير، تعلّمنا القليل حول كيفية التنقّل في نظام الملفّات. على الأرجح فإنّكَ رأيت بعض الملفّات أثناء استخدام أمر ls في المسارات السابقة. في هذا القسم، سنناقش طرقًا مختلفة يمكنك استخدامها لعرض الملفّات. على عكس الأنظمة الأخرى فإنّ نظام لينكس والأنظمة الأخرى الشبيهة بيونكس (Unix-like) تعتمدُ على استخدام الملفّات الصرفة (plain text files) في معظم أجزاء النظام.
</p>

<p dir="rtl">
	الطريقة الرئيسية التي نقوم من خلالها بعرض الملفّات هي عبر استخدام الأمر <span style="font-family:courier new,courier,monospace;">less</span>. والذي ندعوه بـ"منشئ الصفحات (pager)”، لأنّه يسمح لنا بالتنقّل عبر صفحات ملفٍ معيّن، <span style="font-family:courier new,courier,monospace;">less</span> هو عبارة عن تطبيقٍ سيستولي على شاشة الطرفيّة بأكملها أثناء عمله وسيبقى عاملًا إلى حين أن تقرر أنت إغلاقه.
</p>

<p dir="rtl">
	سنقوم بفتح الملفّ <span style="font-family:courier new,courier,monospace;">/etc/services</span> ، والذي هو عبارة عن ملف إعداداتٍ يحتوي على معلومات الخدمات التي يعرفها النظام:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">less /etc/services</pre>

<p dir="rtl">
	سيتم فتح الملفّ في <span style="font-family:courier new,courier,monospace;">less</span> ، مما يسمح لك بعرض جزءٍ من المستند بحيث يتوافق مع مساحة نافذة الطرفيّة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4"><span style="line-height: 11.1999998092651px;">#</span>Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn't support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers and other
# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
# New ports will be added on request if they have been officially assigned
# by IANA and used in the real-world or are needed by a debian package.
# If you need a huge list of used numbers please install the nmap package.
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
. . .
</pre>

<p>
	<span style="line-height: 1.6;">للتمرير بين الصفحات، يُمكنك استخدام مفتاحيّ الأعلى والأسفل على لوحة مفاتيحك. للانتقال بصفحةٍ كاملة إلى الأسفل، يُمكنك إمّا أن تستخدم space bar أو زرّ "Page Down” على لوحة مفاتيحك، أو الاختصار CTRL + F.</span>
</p>

<p dir="rtl">
	للرجوع إلى الأعلى، يمكنك إمّا أن تستخدم زرّ "Page Up” أو الاختصار CTRL + B.
</p>

<p dir="rtl">
	للبحث عن نصٍ معين في المستند، يمكنك كتابة إشارة / متبوعةً بالنصّ الذي تبحث عنه. كمثال، للبحث عن كلمة "mail”، سيجب علينا كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">/mail</pre>

<p dir="rtl">
	سيقوم الأمر السابق بالبحث عبر المستند عن كلمة "mail” ويتوقف عند أول نتيجةٍ متوفرة. للانتقال إلى نتيجةٍ أخرى، يمكنك استخدام مفتاح n الصغير (دون Caps Lock):
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">n</pre>

<p dir="rtl">
	للرجوع إلى النتيجة السابقة، استخدام حرف N الكبير (مع Caps Lock):
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">N</pre>

<p dir="rtl">
	عندما تريد الخروج من برنامج less، يمكنك ببساطة الضغط على حرف <span style="font-family:courier new,courier,monospace;">q</span>:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">q</pre>

<p dir="rtl">
	صحيحٌ أننا قمنا بالتركيز على أداة less في هذا القسم، إلّا أنه يوجد العديد من الطرق الأخرى لعرض محتويات ملفٍّ ما. يقوم الأمر <span style="font-family:courier new,courier,monospace;">cat</span> مثلًا بعرض محتويات الملفّ ويقوم بإرجاعك إلى موجّه الأوامر تلقائيًا. يقوم الأمر head افتراضيًا بعرض أول 10 سطورٍ من ملفٍ ما. أيضًا يقوم الأمر <span style="font-family:courier new,courier,monospace;">tail</span> بعرض السطور الـ10 الأخيرة من ملفٍ ما. تقوم هذه الأوامر بعرض محتويات الملفّات بطريقة تجعلها مناسبة للاستخدام لنقلها عبر الأنابيب (piping) لبرامج أخرى. سنناقش هذا المفهوم في دليلٍ مستقبلي.
</p>

<p dir="rtl">
	جرّب الآن استخدام الأوامر السابقة لعرض محتويات الملفّ <span style="font-family:courier new,courier,monospace;">/etc/services</span> .
</p>

<h2 dir="rtl">
	التّعامل مع الملفّات والمجلّدات
</h2>

<p dir="rtl">
	تعلّمنا في القسم الأخير كيفية عرض الملفّات، في هذا القسم، سنقوم بتوضيح آلية التّعامل مع الملفّات والمجلّدات وإنشائها.
</p>

<h3 dir="rtl">
	إنشاء ملفّ باستخدام <span style="font-family:courier new,courier,monospace;">touch</span>
</h3>

<p dir="rtl">
	يمكن للعديد من الأوامر والبرامج أن تقوم بإنشاء الملفّات. الطريقة الأساسية لإنشاء الملفّات هي عبر الأمر <span style="font-family:courier new,courier,monospace;">touch</span>. هذا الأمر سيقوم بإنشاء ملفٍ فارغ باستخدام اسم الملفّ المطلوب وموقعه المحدد.
</p>

<p dir="rtl">
	أولًا، يجب علينا التأكّد مما إذا كنّا في مجلّد المنزل الخاصّ بنا، بما أنّه المجلّد الذي نمتلكُ فيه صلاحيات حفظ الملفّات. فحينها يمكننا إنشاء ملفٍ يدعى <span style="font-family:courier new,courier,monospace;">file1</span> عبر كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd
touch file1</pre>

<p dir="rtl">
	الآن، إذا قمنا بعرض الملفّات الموجودة في مجلّد المنزل الخاصّ بنا، سنرى ملفّنا الجديد:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">ls
file1</pre>

<p dir="rtl">
	إذا استخدمنا هذا الأمر على ملفٍ موجود مسبقًا، فإنّه ببساطة سيتم تحديث وقت آخر تعديل على الملفّ الذي حاولنا إنشاءه (ولكن لن يتم الكتابة فوقه أو حذفه). هذا لن يفيدنا كثيرًا في مرحلتنا هذه.
</p>

<p dir="rtl">
	يمكننا أيضًا إنشاء أكثر من ملف في نفس الوقت. يمكننا أيضًا استخدام المسارات المُطلقة. كمثال، إذا كان اسم المستخدم الخاصّ بنا يدعى <span style="font-family:courier new,courier,monospace;">demo</span> ، فحينها يمكننا كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">touch /home/demo/file2 /home/demo/file3
ls
</pre>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">file1 file2 file3
</pre>

<h3>
	<span style="line-height: 1.2;">إنشاء المسارات باستخدام <span style="font-family:courier new,courier,monospace;">mkdir</span></span>
</h3>

<p dir="rtl">
	هذا الأمر شبيهٌ بالأمر <span style="font-family:courier new,courier,monospace;">touch</span>، يسمحُ لنا الأمر <span style="font-family:courier new,courier,monospace;">mkdir</span> بإنشاء مساراتٍ (مجلّدات) جديدة فارغة.
</p>

<p dir="rtl">
	كمثال، لإنشاء مجلّد جديد ضمن مجلّد المنزل الخاص بنا ولندعوه <span style="font-family:courier new,courier,monospace;">test</span> ، يمكننا ببساطة كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd
mkdir test</pre>

<p dir="rtl">
	يمكننا أيضًا إنشاء مجلّدٍ داخل مجلّد <span style="font-family:courier new,courier,monospace;">test</span> ولندعوه <span style="font-family:courier new,courier,monospace;">example</span> مثلًا عبر كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">mkdir test/example</pre>

<p dir="rtl">
	لكي يعمل الأمر السابق، يجب على المسار <span style="font-family:courier new,courier,monospace;">test</span> أن يكون موجودًا بالفعل. لإخبار <span style="font-family:courier new,courier,monospace;">mkdir</span> بأنّه يجب عليه إنشاء أيّ مساراتٍ ضرورية في طريقه إلى إنشاء مسارٍ مطلوب، يمكنك استخدام الخيار <span style="font-family:courier new,courier,monospace;">-p</span> معه. يسمحُ لك هذا بإنشاء مساراتٍ ومجلّدات متداخلة في خطوةٍ واحدة. يمكننا إنشاء هيكلة مجلّدات تبدو مثل <span style="font-family:courier new,courier,monospace;">some/other/directories</span> عبر كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">mkdir -p some/other/directories</pre>

<p dir="rtl">
	سيقوم الأمر السابق بإنشاء مجلّد <span style="font-family:courier new,courier,monospace;">some</span> أولًا، ثمّ <span style="font-family:courier new,courier,monospace;">other</span> ثانيًا بداخله، وأخيرًا مجلّد <span style="font-family:courier new,courier,monospace;">directories</span> بداخل هذين المجلّدين.
</p>

<h3 dir="rtl">
	نقل وإعادة تسمية الملفّات والمجلّدات باستخدام mv
</h3>

<p dir="rtl">
	يمكننا تحريكُ ملفٍ ما إلى مسارٍ جديد عبر استخدام الأمر <span style="font-family:courier new,courier,monospace;">mv</span>. كمثال، يمكننا نقل الملف <span style="font-family:courier new,courier,monospace;">file1</span> إلى داخل المجلّد <span style="font-family:courier new,courier,monospace;">test</span> عبر كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">mv file1 test</pre>

<p dir="rtl">
	لاستخدام هذا الأمر، سيجبُ علينا إعطاءه جميع العناصر التي نرغبُ بنقلها بالإضافة إلى المواقع التي نريدُ نقلها إليها في النهاية. يمكننا نقلُ ملفٍ ما إلى مجلّد المنزل الخاص بنا عبر استخدام حرف النقطة الخاص . الذي يشير إلى مسارنا الحالي (حرف النقطة يشير للمسار الحالي، ونحن الآن في مجلّد المنزل)، يجب علينا أن نتأكّد مما إذا كنّا في مجلّد المنزل بالفعل، ومن ثمّ ننفذ الأمر:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd
mv test/file1 .</pre>

<p dir="rtl">
	قد يبدو هذا الأمر مبهمًا قليلًا، ولكن يمكننا استخدام الأمر mv أيضًا لإعادة تسمية الملفّات والمجلّدات. في الواقع، نقل وإعادة تسمية الملفّات ليسا سوى مجرّد عمليتين تضبطان الموقع والاسم لعنصرٍ موجودٍ حالي.
</p>

<p dir="rtl">
	لذا، لإعادة تسمية الملفّ <span style="font-family:courier new,courier,monospace;">test</span> إلى <span style="font-family:courier new,courier,monospace;">testing</span> ، يمكننا كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">mv test testing</pre>

<p dir="rtl">
	ملاحظة: من المهمّ أن تُدركَ أنّ نظام لينكس لن يمنعك من القيام بإجراءاتٍ تدميرية له. إذا قمتَ بمحاولة إعادة تسمية ملفٍ ما واخترت اسمًا يوجد بالفعل لملفٍ آخر بنفس المسار، فحينها فإنّه سيتم الكتابة فوق الملفّ القديم والإبقاء على الملفّ الجديد الذي تقوم بنقله. لا يوجد هناك أيّ طريقة لاسترجاع الملفّ القديم في حال قمتَ بالكتابة فوقه.
</p>

<h3 dir="rtl">
	نسخ الملفّات والمجلّدات باستخدام <span style="font-family:courier new,courier,monospace;">cp</span>
</h3>

<p dir="rtl">
	مع الأمر <span style="font-family:courier new,courier,monospace;">mv</span>، يمكننا نقل أو إعادة تسمية ملفٍّ ما أو مجلّد، ولكن لا يمكننا استنساخه. يُمكن للأمر <span style="font-family:courier new,courier,monospace;">cp</span> أن يقوم بعملِ نسخةٍ جديدة من عنصرٍ موجودٍ حاليًا.
</p>

<p dir="rtl">
	كمثال، يمكننا نسخ الملف <span style="font-family:courier new,courier,monospace;">file3</span> إلى ملفٍ جديد يُدعى <span style="font-family:courier new,courier,monospace;">file4</span>:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cp file3 file4</pre>

<p dir="rtl">
	على عكس العملية التي يقوم بها <span style="font-family:courier new,courier,monospace;">mv</span> والتي بعدها لن يبقى ملفّ <span style="font-family:courier new,courier,monospace;">file3</span> موجودًا، فإنّنا الآن نمتلكُ كلًّا من الملفّين <span style="font-family:courier new,courier,monospace;">file3</span> و <span style="font-family:courier new,courier,monospace;">file4</span>.
</p>

<p dir="rtl">
	<strong>ملاحظة</strong>: كما هو الحال مع الأمر <span style="font-family:courier new,courier,monospace;">mv</span>، فإنّه يُمكن أيضًا أن يتم الكتابة فوق ملفٍ ما إذا لم تكن حذرًا حول اسم الملفّ الذي ستستخدمه كهدفٍ للعمليّة. كمثال، إذا كان الملفّ <span style="font-family:courier new,courier,monospace;">file4</span> موجودًا بالفعل بالمثال أعلاه، فإنّه سيتم استبدال محتوياته بشكلٍ كامل بمحتويات الملفّ <span style="font-family:courier new,courier,monospace;">file3</span>.
</p>

<p dir="rtl">
	بهدفِ نسخ المجلّدات والمسارات، يجب أن تستخدم الخيار <span style="font-family:courier new,courier,monospace;">-r</span> مع الأمر <span style="font-family:courier new,courier,monospace;">cp</span>. هذا الخيار هو اختصار لكلمة "recursive”، حيثُ أنّه يقوم بنسخ المجلّد بالإضافة إلى جميع محتوياته الداخلية. من الضروري استخدام هذا الخيار عند نسخ المجلّدات، بغضّ النظر عمّا إذا كان المجلّد فارغًا أم لا.
</p>

<p dir="rtl">
	كمثال، انسخ المجلّد <span style="font-family:courier new,courier,monospace;">some</span> إلى مجلّدٍ جديد يدعى <span style="font-family:courier new,courier,monospace;">again</span> ، عن طريق الأمر:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cp -r some again</pre>

<p dir="rtl">
	على عكس الملفّات، والتي يُمكن الكتابة فوقها في حال كانت موجودة بالفعل، فإنّه في حال كان المجلّد الهدف موجودًا بالفعل، فإنّه سيتم نسخ المجلّد أو الملفّ إلى داخل المجلّد الموجود حاليًا:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cp file1 again</pre>

<p dir="rtl">
	هذا الأمر سيقوم بإنشاء نسخةٍ جديدة من ملفّ <span style="font-family:courier new,courier,monospace;">file1</span> ويضعها داخل مجلّد <span style="font-family:courier new,courier,monospace;">again</span>.
</p>

<h3 dir="rtl">
	حذف الملفّات والمجلّدات باستخدام <span style="font-family:courier new,courier,monospace;">rm</span> و <span style="font-family:courier new,courier,monospace;">rmdir</span>
</h3>

<p dir="rtl">
	يمكنك استخدام الأمر <span style="font-family:courier new,courier,monospace;">rm</span> لحذف ملفٍ معيّن.
</p>

<p dir="rtl">
	<strong>ملاحظة</strong>: كنّ حذرًا بشدّة عند استخدام أوامر تدميرية مثل <span style="font-family:courier new,courier,monospace;">rm</span> . لأنّه لا يوجد هناك أمرٌ استرجاعي لهذه الأفعال في حال حصلت، لذلك فمن الممكن أن تقومَ بتدميرِ ملفاتٍ مهمّة بالخطأ للأبد.
</p>

<p dir="rtl">
	لحذف ملفٍ عادي، طبّق:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd
rm file4</pre>

<p dir="rtl">
	بالمثلِ أيضًا، لحذف المجلّدات الفارغة، يمكننا استخدام الأمر <span style="font-family:courier new,courier,monospace;">rmdir</span>. سينجحُ هذا الأمر فقط في حال كان المجلّد فارغًا. كمثال، لحذف مجلّد <span style="font-family:courier new,courier,monospace;">example</span> الموجود بداخل مجلّد <span style="font-family:courier new,courier,monospace;">testing</span>، يمكننا أن نكتب:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">rmdir testing/example</pre>

<p dir="rtl">
	إذا كنتَ ترغبُ في حذف مجلّد غير فارغ، فسيجبُ عليك استخدام الخيار -r مع الأمر rmdir، والذي سيقوم بحذف جميع محتويات مسارٍ معيّن مباشرةً، بالإضافة إلى المجلّد نفسه.
</p>

<p dir="rtl">
	كمثال، لحذف مجلّد<span style="font-family:courier new,courier,monospace;"> again</span> وكل شيءٍ بداخله، يمكننا أن نكتب:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">rm -r again</pre>

<p dir="rtl">
	مُجدّدًا، تجدرُ الإشارة إلى أن هذه العمليات دائمة. كنّ متأكدًا دائمًا أنّ الأمر الذي كتبته هو أمرٌ ترغبُ في تنفيذه حقًا.
</p>

<h2 dir="rtl">
	تحرير الملفّات
</h2>

<p dir="rtl">
	حاليًا، صرنا نعرف كيفية التّعامل مع الملفّات ككائنات، ولكننا لم نتعلّم بعد كيفية تحريرها بشكلٍ فعلي وكيفية إضافة المحتوى إليها.
</p>

<p dir="rtl">
	الأمر <span style="font-family:courier new,courier,monospace;">nano</span> هو واحدٌ من أبسط محررات النصوص المُستعملة عبر سطر الأوامر في نظام لينكس، وهو نقطة بدايةٍ عظيمة للمبتدئين. يقوم <span style="font-family:courier new,courier,monospace;">nano</span> بتنفيذ الأوامر بشكلٍ شبيه ببرنامج <span style="font-family:courier new,courier,monospace;">less</span> الذي تحدّثنا عنه من قبل، ولكنّه يحتلّ شاشة الطرفيّة بأكملها طوال فترة استخدامه.
</p>

<p dir="rtl">
	يُمكن للمحرر <span style="font-family:courier new,courier,monospace;">nano</span> أن يقوم بفتح ملفاتٍ موجودة أو إنشاء أخرى. إذا قررتَ إنشاء ملفٍ جديد، يمكنك تمرير اسمه للمحرر <span style="font-family:courier new,courier,monospace;">nano</span> الآن أو لاحقًا عندما تودُّ حفظ المحتوى الذي تريده.
</p>

<p dir="rtl">
	يمكننا فتح الملفّ <span style="font-family:courier new,courier,monospace;">file1</span> للتحرير عبر كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">cd
nano file1</pre>

<p dir="rtl">
	سيقوم برنامج <span style="font-family:courier new,courier,monospace;">nano</span> بفتح الملفّ (والذي هو فارغٌ حاليًا). ستبدو الواجهة شيئًا كالتالي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">GNU nano 2.2.6 File: file1









[ Read 0 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell</pre>

<p dir="rtl">
	بالأعلى، لدينا اسم التطبيق واسم الملفّ الذي نقوم حاليًا بتحريره. في المنتصف، محتوى الملفّ الفارغ حاليًا. في الأسفل، يظهرُ عددٌا من المفاتيح التي يُمكن أن يتم ضغطها مع بعضها البعض لتنفيذ مهامٍ معيّنة للتحكم في المحرّر. لكلّ واحدٍ من هؤلاء، يعني الحرف ^ مفتاحَ CTRL.
</p>

<p dir="rtl">
	للحصول على المساعدة من المحرّر، اضغط على مفاتحي:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">Ctrl + G</pre>

<p dir="rtl">
	عندما تنتهي من تصفّح المساعدة، اضغط على Ctrl + X للرجوع إلى مستندك.
</p>

<p dir="rtl">
	قم بكتابة / تعديل أيِّ نصٍ تريده. في هذا المثال، سنكتبُ العبارتين التاليتين فقط:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">Hello there.
Here Is some text.</pre>

<p dir="rtl">
	لحفظ ما كتبناه، يمكننا أن نضغط:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">Ctrl + O</pre>

<p dir="rtl">
	هذا هو الحرف <span style="font-family:courier new,courier,monospace;">O</span> وليس الرقم صفر. سيسألك البرنامج عن تأكيد اسم الملفّ الذي تودّ حفظه:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="">File Name to Write: file1                                                            
^G Get Help          M-D DOS Format       M-A Append           M-B Backup File
^C Cancel            M-M Mac Format       M-P Prepend</pre>

<p dir="rtl">
	كما ترى، تغيّرت الخيارات التي بالأسفل أيضًا. تعتمد هذه الخيارات على السياق، بمعنى أنّها ستتغير طبقًا لِمَا تحاولُ أن تفعله. إذا كان الملفّ file1 لا يزالُ ملفًا ترغبُ بالكتابة إليه، اضغط على مفتاح "Enter”.
</p>

<p dir="rtl">
	إذا قمنا بعمل بعض التغييرات الإضافية ورغبنا في حفظ الملفّ والخروج من البرنامج، فسنتمكّن من رؤية موجّه أوامرٍ مشابه. قم بإضافة سطرٍ جديد، ثمَّ حاول الخروج من البرنامج عبر كتابة:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">Ctrl + X</pre>

<p dir="rtl">
	إذا لم تقم بحفظ المحتويات قبل الخروج بعد عمل تغييراتك، فسيتم سؤالك عمّا إذا كنتَ تريد حفظها أم لا:
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="">Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?                         
 Y Yes
 N No           ^C Cancel</pre>

<p dir="rtl">
	يمكنك كتابة "Y” لحفظ التغييرات، "N” لرفضها والخروج، أو "Ctrl + C” لإلغاء عمليّة الخروج من البرنامج والعودة إليه. إذا اخترتَ الحفظ، فستحصلُ على نفسِ موجّه أوامر الملفّ الذي حصلتَ عليه من قبل، لتأكيد ما إذا كنتَ تريد حفظ التغييرات إلى نفس الملفّ. اضغط زرّ Enter لحفظ الملفّ والخروج من المحرّر.
</p>

<p dir="rtl">
	يمكنك رؤية محتويات الملفّ الذي أنشأته إمّا عبر برنامج cat لعرض محتوياته، أو برنامج less لعرضِه للقراءة. بعد عرضِ البرنامج باستخدام less ، تذكّر أنّه يجب عليك الضغط على زرّ q للرجوع للطرفيّة.
</p>

<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="">less file1

Hello there.
Here is some text.
Another line.</pre>

<p dir="rtl">
	محرّرٌ آخر يمكنُ أن يتم توجيهكَ إليّه في شروحاتٍ مستقبلية هو <span style="font-family:courier new,courier,monospace;">vim</span> أو <span style="font-family:courier new,courier,monospace;">vi</span> . هذا المحرّر أكثر تطورًا وأكثر قوةً ، ولكنّ يتطلب الكثير لتعلّمه. إذا أخبركَ أحدهم باستخدام <span style="font-family:courier new,courier,monospace;">vim</span> أو <span style="font-family:courier new,courier,monospace;">vi</span>، فاستخدم <span style="font-family:courier new,courier,monospace;">nano</span> عوضًا عن ذلك. إذا كنتَ ترغبُ بتعلّم المزيد حول كيفية استخدام <span style="font-family:courier new,courier,monospace;">vim</span> ، فاقرأ <a href="https://www.digitalocean.com/community/tutorials/installing-and-using-the-vim-text-editor-on-a-cloud-server" rel="external nofollow">هذا الدّرس حول كيفية البدء مع </a><a href="https://www.digitalocean.com/community/tutorials/installing-and-using-the-vim-text-editor-on-a-cloud-server" rel="external nofollow">vim</a>.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h2 dir="rtl">
	الخاتمة
</h2>

<p dir="rtl">
	الآن، يجب أن تكونَ قد امتلكتَ أساسيات فهم كيفية التنقّل في خادومك العامل بنظام لينكس وكيفية عرض الملفّات والمسارات المتوّفرة. يجبُ أن تكون قادرًا أيضًا على معرفة أساسيات أوامر التعامل مع الملفّات والتي ستسمح لك بعرض، نسخ، نقل أو حذف الملفّات. أخيرًا، يجب أن تكون مرتاحًا مع بعض أساسيات تحرير الملفّات باستخدام محرّر nano.
</p>

<p dir="rtl">
	مع هذه المهارات القليلة، يجب أن يكون قادرًا على متابعة مشوارك في شروحاتٍ أخرى وتعلّم كيفية استخراج أكبر إمكانية متوفّرة من خادومك. في <span style="line-height: 17.9200000762939px;">الدّرس</span> التالي، سنناقش كيفية عرض وفهم الأذونات في لينكس.
</p>

<p>
	ترجمة -وبتصرّف- للمقال: <a href="https://www.digitalocean.com/community/tutorials/basic-linux-navigation-and-file-management" rel="external nofollow">Basic Linux Navigation and File Management</a>.
</p>
]]></description><guid isPermaLink="false">24</guid><pubDate>Sun, 05 Apr 2015 13:09:00 +0000</pubDate></item><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x637;&#x631;&#x641;&#x64A;&#x651;&#x629; &#x644;&#x64A;&#x646;&#x643;&#x633; Linux Terminal</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B7%D8%B1%D9%81%D9%8A%D9%91%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-terminal-r18/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_03/linux-terminal_480x300.png.d2d0247048ccc0a28cff1a900c753d36.png" /></p>

<p dir="rtl">
	سنغطّي في هذا الدّرس أساسيات التعامل مع الطرفيّة (Terminal) في لينكس أو بالأحرى سطر الأوامر في لينكس بالإضافة إلى العديد من الأوامر المشوّقة. إذا كنتَ جديدًا على نظام لينكس فقد تودّ أن تتعرّف على الطرفيّة قليلًا كونها الطريقة الأساسية للتعامل مع الخواديم العاملة بنظام لينكس. ربما يبدو استخدام سطر الأوامر كمهمّةٍ شاقّة للوهلة الأولى ولكنه في الواقع سهلٌ للغاية إذا بدأت بتعلّم الأساسيات أولًا وبناء مهاراتك من هناك.
</p>

<p dir="rtl">
	إذا كنتَ تريد أن تستفيد إلى أقصى الحدود من هذا الدليل، فستحتاج خادوم لينكس لتتصل به وتستعمله. تم إعداد هذا الدليل ليتوافق مع خادومٍ يعمل بنظام Ubuntu 14.04 ولكن المعلومات العامّة تنطبق أيضًا على التوزيعات الأخرى.
</p>

<p dir="rtl">
	فلنبدأ بتعريف ماهيّة محاكي الطرفيّة.
</p>

<h2 dir="rtl">
	مُحاكي الطرفيّة
</h2>

<p dir="rtl">
	محاكي الطرفيّة (terminal emulator) هو عبارة عن برنامجٍ يسمح باستخدام الطرفيّة في بيئةٍ رسومية. كما أنّ معظم الناس يستخدمون نظام التشغيل بواسطة واجهةٍ رسومية (GUI) لأداء مهامّهم اليومية، فإنّه من الضروري استخدام محاكي الطرفيّة من قبل معظم مستخدمي خواديم لينكس لأداء مهامّهم.
</p>

<p dir="rtl">
	إليك بعض محاكيات الطرفيّة المجانية والشهيرة بناءً على نظام التشغيل:
</p>

<ul>
<li>
		<p dir="rtl">
			Mac OS X: الطرفية (الافتراضيّة)، iTerm 2.
		</p>
	</li>
	<li>
		<p dir="rtl">
			Windows: برنامج Putty.
		</p>
	</li>
	<li>
		<p dir="rtl">
			Linux: الطرفيّة، KDE Konsole, Xterm.
		</p>
	</li>
</ul>
<p dir="rtl">
	يمتلكُ كلُّ محاكي طرفية مجموعته الخاصّة من المميزات، ولكنّ كلَّ واحدٍ من القائمة السابقة يعمل جيدًا ومن السهل استخدامه.
</p>

<h2 dir="rtl">
	الصدفة
</h2>

<p dir="rtl">
	في نظام لينكس، الصدفة (shell) هي عبارة عن واجهة سطر أوامر تتفاعل مع أوامر المستخدم وملفّات السكربتات (scripts) وتقوم بإخبار نظام تشغيل الخادوم عن كيفية التعامل معها. هناك عدّة صدفات شهيرة، مثل صدفة Bourne (اختصارها sh) وصدفة C (اختصارها csh). تمتلك كلُّ صدفة مميزاتها الخاصّة بها والتي تختلف بها عن الأخرى، مثل كيفية معالجة وتفسير الأوامر التي تصلها، ولكنّها جميعًا تمتلك المزايا الأساسية مثل إعادة توجيه الإدخال والإخراج، المتغيّرات، اختبار الشروط وأمور أخرى.
</p>

<p dir="rtl">
	تمّ كتابة هذا الدليل ليتعامل مع صدفة Bourne-Again، والتي عادةً يتم الإشارة إليها باسم bash. والتي هي أيضًا الصدفة الافتراضيّة لمعظم توزيعات لينكس، مثل Ubuntu, CentOS و RedHat.
</p>

<h2 dir="rtl">
	موجّه الأوامر
</h2>

<p dir="rtl">
	عندما تقوم بتسجيل الدخول لأول مرة إلى خادوم، فإنّه عادةً سيتم ترحيبك بواسطة "رسالة اليوم – Message of the day” (اختصارها MOTD)، والتي هي عادةً ما تكون رسالةً تحتوي على معلوماتٍ عدّة مثل إصدار توزيعة لينكس التي يستخدمها الخادوم. بعد رسالة MOTD، سيتم توجيهك إلى موجّه الأوامر (command prompt)، أو موجّه الصدفة، والذي هو المكان الذي يمكنك من خلاله إصدار الأوامر إلى الخادوم.
</p>

<p dir="rtl">
	المعلومات التي يتم تقديمها في موجّه الأوامر يُمكن أن يتم تخصيصها من طرف المستخدم، هذا مثال على موجّه الأوامر الافتراضي لتوزيعة أوبونتو 14.04:
</p>

<pre class="php ipsCode prettyprint">
sammy@webapp:~$</pre>

<p dir="rtl">
	فلنجزّء مكونات الأمر السابق:
</p>

<ul>
<li>
		<p dir="rtl">
			<span style="font-family:'courier new', courier, monospace;">sammy</span>: اسم المستخدم الحالي.
		</p>
	</li>
	<li>
		<p dir="rtl">
			<span style="font-family:'courier new', courier, monospace;">webapp</span>: اسم المضيف الحالي (hostname).
		</p>
	</li>
	<li>
		<p dir="rtl">
			<span style="font-family:'courier new', courier, monospace;">~</span>: المسار الحالي. في bash، والتي هي غالبًا ما تكون الصدفة الافتراضيّة، فإنّ إشارة <span style="font-family:'courier new', courier, monospace;">~</span> أو ما تُعرف بإشارة المدّ، هي عبارةً عن محرف خاص يُشيرُ تلقائيًا إلى مسار مجلّد المنزل للمستخدم العادي; في هذه الحالة، هو يمثّل المسار <span style="font-family:'courier new', courier, monospace;">/home/sammy</span> .
		</p>
	</li>
	<li>
		<p dir="rtl">
			<span style="font-family:'courier new', courier, monospace;">$</span>: رمز موجّه الأوامر. هذا الرمز يُعَلّم نهاية موجّه الأوامر، والذي بعده سيظهر ما يُدخله المستخدم إلى الطرفيّة.
		</p>
	</li>
</ul>
<p dir="rtl">
	إليك مثالًا لِمَا سيبدو عليه موجّه الأوامر إذا تمّ تسجيل الدخول باسم المستخدم root في المسار <span style="font-family:'courier new', courier, monospace;">/var/log</span> :
</p>

<pre class="php ipsCode prettyprint">
root@webapp:/var/log#</pre>

<p dir="rtl">
	لاحظ أنّ موجّه الأوامر ينتهي برمز <span style="font-family:'courier new', courier, monospace;">#</span> ، والذي يُعتبر رمز موجّه الأوامر الخاص بالمستخدم root. في نظام لينكس، مستخدم root هو المستخدم الفائق والذي هو بإمكانه تطبيق تغييراتٍ على امتداد النظام بأكمله بالإضافة لوظائف الإدارة والإعداد، إنّه مستخدم غير مقيّد بأيّ نوعٍ من القيود وبإمكانه تنفيذ أيّ مهمة على الخادوم.
</p>

<h2 dir="rtl">
	تنفيذ الأوامر
</h2>

<p dir="rtl">
	يُمكن إصدار الأوامر في موجّه الأوامر عبر تحديد اسم ملفٍّ تنفيذي، والذي يمكن أن يكون برنامجًا تنفيذيًا أو سكربتًا. هناك العديد من أوامر لينكس المعيارية والأدوات التي تأتي مُثبتةً مع نظام التشغيل، والتي تسمح لك بتصفّح نظام الملفّات، تثبيت وإزالة البرامج والحزم بالإضافة إلى إعداد النظام والتطبيقات.
</p>

<p dir="rtl">
	مهمّة تشغيل أمرٍ ما تُعرف باسم "عملية". عندما يتم تنفيذ أمرٍ ما من طرف المستخدم (والتي هي الطريقة الافتراضيّة لتنفيذ المهام)، فإنّه يجب على المستخدم أن ينتظر إلى حين انتهاء العملية قبل أن يتم إرجاعه من جديد إلى موجّه الأوامر، حينها يمكنه إصدار المزيد من الأوامر ليتم تنفيذها.
</p>

<p dir="rtl">
	من المهم التنويه أيضًا إلى أنّ كلّ الأشياء في نظام لينكس حساسة لحالة الحروف، بما في ذلك أسماء الملفّات والمسارات، الأوامر، المُعطيات والخيارات. إذا كان شيءٌ ما لا يعمل كالمتوقّع، فقم بالتحقق من تهجئة وحالة حروف الأوامر الخاصّة بك.
</p>

<p dir="rtl">
	سنقوم بالتطرّق إلى بضع أمثلة تغطّي أساسيات تنفيذ الأوامر.
</p>

<p dir="rtl">
	ملاحظة: إذا لم تكن متّصلًا بالفعل بخادوم لينكس، فالآن هو الوقت المناسب لفعل ذلك. إذا كنتَ تمتلك خادوم لينكس ولكنك تواجه مشاكل بالاتّصال، فاتّبع هذا الرابط: <a data-ss1631789891="1" href="https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-ssh" rel="external nofollow">كيفية الاتصال بخادوم عبر </a><a data-ss1631789891="1" href="https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-ssh" rel="external nofollow"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></a>.
</p>

<h3 dir="rtl">
	دون مُعطيات وخيارات
</h3>

<p dir="rtl">
	لتنفيذ أمرٍ دون معطياتٍ (arguments) أو خيارات، بكل بساطة قم بكتابة الأمر واضغط على زرّ Enter.
</p>

<p dir="rtl">
	إذا قمتَ بتشغيل أمرٍ بهذه الطريقة، فسيقوم باستخدام سلوكه الافتراضي، والذي يختلف من أمرٍ إلى آخر. مثلًا، إذا قمتَ بتشغيل الأمر cd دون أيّ مُعطيات، فسيتم إرجاع إلى مسار مجلّد المنزل الخاص باسم المستخدم الذي تستعمله حاليًا. سيقوم الأمر ls بطباعة محتويات المسار الحالي من ملفّاتٍ ومجلّدات. وبدون أيّ مُعطيات فسيقوم الأمر ip بطباعة رسالةٍ تبيّن لك كيفية استخدام الأمر ip.
</p>

<p dir="rtl">
	جرّب تشغيل الأمر ls بدون أي مُعطيات لسرد الملفّات والمجلّدات الحالية في مسارك الحالي (ربما لا يكون هناك أيٌّ منها بالمناسبة):
</p>

<pre class="php ipsCode prettyprint">
ls</pre>

<h3 dir="rtl">
	مع المُعطيات
</h3>

<p dir="rtl">
	تتوقع العديد من الأوامر استقبال مُعطيات أو مُعامِلات (parameters)، والتي من شأنها أن تقوم بتغيير سلوك عملية تنفيذ الأمر. مثلًا، الطريقة الأكثر شيوعًا لاستخدام <span style="font-family:'courier new', courier, monospace;">cd</span> هي عبر تمرير مُعطىٍ وحيد إليه يُحدد المسار الذي يجب الانتقال إليه. كمثال، للانتقال إلى المسار <span style="font-family:'courier new', courier, monospace;">/usr/bin</span> حيث يتم تثبيت العديد من الأوامر العادية، فسيتوجّب عليك تطبيق الأمر التالي:
</p>

<pre class="php ipsCode prettyprint">
cd /usr/bin</pre>

<p dir="rtl">
	الجزء "cd” من الأمر السابق هو الأمر، والمُعطى الأول "<span style="font-family:'courier new', courier, monospace;">/usr/bin</span>” يتبُع الأمر. لاحظ كيف تمّ تحديث مسار موجّه الأوامر الحالي تلقائيًا بعد تنفيذ الأمر.
</p>

<p dir="rtl">
	إذا كنتَ تحبّ، جرّب تشغيل الأمر <span style="font-family:'courier new', courier, monospace;">ls</span> لرؤية الملفّات الموجودة حاليًا في مسارك الحالي.
</p>

<pre class="php ipsCode prettyprint">
ls</pre>

<h3 dir="rtl">
	مع الخيارات
</h3>

<p dir="rtl">
	تقبل معظم الأوامر الخيارات، والتي تُعرف أيضًا باسم الأعلام (flags) أو المحوّلات (switches)، والتي تقوم بالتّعديل على سلوكٍ أمرٍ ما وعمله. وبما أنها عبارة عن مُعطياتٍ من نوعٍ خاص، فإنّ الخيارات تتبعُ الأوامر أيضًا، ويُمكن التعرّف على الخيارات عبر مِحرَف ( <span style="font-family:'courier new', courier, monospace;">-</span> ) متبوعًا بخيارٍ واحدٍ أو أكثر، والتي يتم تمثيلها بحروفٍ كبيرة أو صغيرة. بالإضافة إلى ذلك، تبدأ بعض الخيارات بـ (<span style="font-family:'courier new', courier, monospace;">-</span>-) متبوعةً بخيارٍ وحيد يتكون من أكثر من مِحرَف (عادةً يكون كلمةً أو كلمتين تصفان الخيار).
</p>

<p dir="rtl">
	كمثالٍ بسيط حول كيفية عمل الخيارات، فلنلقي نظرةً على الأمر ls. إليكَ بعض الخيارات الشائعة التي يتم استخدامها عادةً عند التعامل مع الأمر <span style="font-family:'courier new', courier, monospace;">ls</span>:
</p>

<ul>
<li>
		<p dir="rtl">
			<span style="font-family:'courier new', courier, monospace;">-l</span> : طباعة "السرد الطويل"، والذي يتضمّن تفاصيل إضافية مثل أذونات الملفّات، الملكيّة، الحجم والتوقيت.
		</p>
	</li>
	<li>
		<p dir="rtl">
			<span style="font-family:'courier new', courier, monospace;">-a</span> : سرد جميع محتويات مسارٍ معين، بما في ذلك الملفّّات المخفيّة (والتي تبدأ بإشارة <span style="font-family:'courier new', courier, monospace;">.</span> ).
		</p>
	</li>
</ul>
<p dir="rtl">
	لاستخدام خيار <span style="font-family:'courier new', courier, monospace;">-l</span> مع الأمر <span style="font-family:'courier new', courier, monospace;">ls</span>، استعمل هذا الأمر:
</p>

<pre class="php ipsCode prettyprint">
ls -l</pre>

<p dir="rtl">
	لاحظ أنّ عملية السرد تتضمن نفس الملفّات التي تمّ سردُها مسبقًا، ولكن بمعلوماتٍ إضافية حول كلِّ ملفّّ.
</p>

<p dir="rtl">
	كما ذكرنا مسبقًا، يُمكن تجميع الخيارات مع بعضها البعض. إذا كنتَ تريد استخدام الخيارين <span style="font-family:'courier new', courier, monospace;">-a</span> و <span style="font-family:'courier new', courier, monospace;">-l</span> مع بعضهما البعض، فيمكنك تطبيق <span style="font-family:'courier new', courier, monospace;">ls -l -a</span> أو جمعهما هكذا:
</p>

<pre class="php ipsCode prettyprint">
ls -la</pre>

<p dir="rtl">
	لاحظ أنّ عملية السرد تتضمن الملفّّات والمسارات المخفيّة بسبب الخيار -a.
</p>

<h3 dir="rtl">
	مع الخيارات والمُعطيات
</h3>

<p dir="rtl">
	يُمكن غالبًا جمعُ المُعطيات والخيارات مع بعضهما البعض عند تشغيل الأوامر.
</p>

<p dir="rtl">
	كمثال، يُمكنك التحقق من محتويات المسار <span style="font-family:'courier new', courier, monospace;">/home</span> ، بغضّ النظر عن مسارك الحالي عن طريق استخدام أمر <span style="font-family:'courier new', courier, monospace;">ls</span> هذا:
</p>

<pre class="php ipsCode prettyprint">
ls -la /home</pre>

<p dir="rtl">
	<span style="font-family:'courier new', courier, monospace;">ls</span> هو الأمر، <span style="font-family:'courier new', courier, monospace;">-la</span> هو الخيار و<span style="font-family:'courier new', courier, monospace;">/home</span> هو المُعطى الذي يحدد الملفّ أو المسار الذي يجب سردُه. يجب أن يطبع هذا الأمر محتويات المسار <span style="font-family:'courier new', courier, monospace;">/home</span> ،والذي يجب بدوره أن يحتوي جميع مجلّدات المنزل الخاصّة بالمستخدمين العاديين على الخادوم.
</p>

<h2 dir="rtl">
	مُتغيّرات البيئة
</h2>

<p dir="rtl">
	مُتغيّرات البيئة (environment variables) هي عبارة عن قِيَم (values) تقوم بتغيير طريقة تنفيذ الأوامر والعمليات. عندَ تسجيل الدخول لأولّ مرة إلى الخادوم، فإنّه سيتم ضبط العديد من مُتغيّرات البيئة وفقًا لعدّة ملفّات إعداد افتراضيًا.
</p>

<h3 dir="rtl">
	عرض جميع مُتغيّرات البيئة
</h3>

<p dir="rtl">
	لعرض جميع مُتغيّرات البيئة التي تم ضبطُها لجلسة طرفية معيّنة، قم بتشغيل الأمر <span style="font-family:'courier new', courier, monospace;">env</span>:
</p>

<pre class="php ipsCode prettyprint">
env</pre>

<p dir="rtl">
	سيكون هناك ناتجٌ كثير للأمر السابق، ولكن حاول العثور على مُدخلة PATH:
</p>

<pre class="php ipsCode prettyprint">
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games</pre>

<p dir="rtl">
	مُتغيّر البيئة <span style="font-family:'courier new', courier, monospace;">PATH</span> هو عبارة عن قائمةٍ مفصولٌ عناصرها بنقطتين فوق بعضهما، تتكون من قائمةٍ بالمسارات التي ستقوم الصَدَفَة بالبحث عن البرامج أو السكربتات التنفيذيّة عند تنفيذ أمرٍ معيّن. مثلًا، يوجد الأمر <span style="font-family:'courier new', courier, monospace;">env</span> بالمسار <span style="font-family:'courier new', courier, monospace;">/usr/bin</span> ، ويُمكننا تنفيذ الأمر دون الحاجة إلى تحديد موقعه بالضبط، لأنّ مساره موجود في متغيّر البيئة <span style="font-family:'courier new', courier, monospace;">PATH</span>.
</p>

<h3>
	عرض قيمة مُتغيّر
</h3>

<p dir="rtl">
	يُمكن جلب قيمة مُتغيّر بيئة عن طريق وضع إشارة <span style="font-family:'courier new', courier, monospace;">$</span> قبل اسم المتغيّر. حيثُ أنّ القيام بذلك سيقوم باستبدال اسم المتغيّر بقيمته.
</p>

<p dir="rtl">
	مثلًا، لطباعة قيمة المتغيّر <span style="font-family:'courier new', courier, monospace;">PATH</span>، يمكنك استخدام الأمر <span style="font-family:'courier new', courier, monospace;">echo</span>:
</p>

<pre class="php ipsCode prettyprint">
echo $PATH</pre>

<p dir="rtl">
	يُمكنك استخدام المتغيّر <span style="font-family:'courier new', courier, monospace;">HOME</span> أيضًا، والذي هو عبارة عن مسار مجلّد المنزل الخاص بمستخدمك الحالي الافتراضي، للانتقال إلى مجلّد المنزل الخاص بك، طبّق:
</p>

<pre class="php ipsCode prettyprint">
cd $HOME</pre>

<p dir="rtl">
	إذا كنتَ تحاول الوصول إلى مُتغيّر بيئةٍ لم يتم ضبطه بعد، فإنّه لن يتم طباعة قيمة ذاك المتغيّر، حيث أنه سيكون مُتغيّرا فارغًا.
</p>

<h3 dir="rtl">
	ضبط مُتغيّرات البيئة
</h3>

<p dir="rtl">
	الآن، تعلّمتَ كيفية عرض مُتغيّرات البيئة الخاصّة بك، يجب عليك الآن تعلّم كيفية ضبطها.
</p>

<p dir="rtl">
	لضبط أو تعيين مُتغيّر بيئة، فكلُّ ما ستحتاج القيام به هو البدء بكتابة اسم المتغيّر متبوعًا بإشارة = ، متبوعةً مباشرةً بقيمته، كمثال:
</p>

<pre class="php ipsCode prettyprint">
VAR=value</pre>

<p dir="rtl">
	لاحظ أنّه في حال قمتَ بمحاولة تعيين قيمةٍ لمُتغيّرٍ موجودٍ بالفعل، فإنّه سيتم الكتابة فوق القيمة الافتراضيّة. وإذا لم يكن المتغيّر موجودًا أساسًا فإنّه سيتم إنشاؤه.
</p>

<p dir="rtl">
	صدفة <span style="font-family:'courier new', courier, monospace;">Bash</span> تمتلكُ أمرًا يُدعى <span style="font-family:'courier new', courier, monospace;">export</span> والذي يقوم بتصدير مُتغيّرٍ ليُتَمَكَّنَ من استدعائه بواسطة العمليات الفرعية (child processes). بعبارةً أبسط، يَسمحُ لك هذا الأمر باستخدام سكربتاتٍ تستدعي مُتغيّرات بيئة تمّ تصديرها من جلستكَ الحاليّة. إذا كنتَ لم تستوعب بعدُ ما يعني هذا، فلا تقلق الآن.
</p>

<p dir="rtl">
	يُمكنك الإشارة إلى متغيراتٍ حالية عند تعيين مُتغيّراتٍ جديدة. مثلًا، إذا قمتَ بتثبيت تطبيقٍ ما إلى المسار <span style="font-family:'courier new', courier, monospace;">/opt/app/bin</span> ، فيُمكنك إضافة ذاك المسار إلى نهاية مُتغيّر البيئة <span style="font-family:'courier new', courier, monospace;">PATH</span> الخاصّ بك عبر هذا الأمر:
</p>

<pre class="php ipsCode prettyprint">
export PATH=$PATH:/opt/app/bin</pre>

<p dir="rtl">
	الآن، تأكّد مما إذا تمّ إضافة <span style="font-family:'courier new', courier, monospace;">/opt/app/bin</span> إلى نهاية مُتغيّر <span style="font-family:'courier new', courier, monospace;">PATH</span> باستخدام الأمر <span style="font-family:'courier new', courier, monospace;">echo</span>:
</p>

<pre class="php ipsCode prettyprint">
echo $PATH</pre>

<p dir="rtl">
	لا تنس أنّ القيام بتعيين مُتغيّرات البيئة بهذه الطريقة يقوم بتعيينها فقط لجلستك الحالية. هذا يعني أنّه في حال قمتَ بتسجيل الخروج من جلستك الحالية أو التبديل لجلسةٍ أخرى، فإنّه لن يتم حفظ أيٍّ من التغييرات التي قمتَ بها على مُتغيّرات البيئة. هناك دومًا طريقة للإبقاء على هذه التغييرات، ولكننا لن نغطّي هذا الأمر في هذا الدليل حاليًا.
</p>

<h2 dir="rtl">
	الخاتمة
</h2>

<p dir="rtl">
	هكذا الآن تعلّمتَ أساسيات طرفيّة لينكس (وبضع أوامرَ أخرى)، يجب أن تمتلك الآن قدرةً جيّدة على توسيع معرفتك بأوامر نظام لينكس.
</p>

<p dir="rtl">
	ترجمة -وبتصرّف- للمقال: <a data-ss1631789891="1" href="https://www.digitalocean.com/community/tutorials/an-introduction-to-the-linux-terminal" rel="external nofollow">An Introduction to the Linux Terminal</a>.
</p>
]]></description><guid isPermaLink="false">18</guid><pubDate>Wed, 25 Mar 2015 08:15:00 +0000</pubDate></item></channel></rss>
