كيفية استخدام محفوظات باش في نظام التشغيل لينوكس أو ماكوس الطرفية
يعتبر bash shell بيئة طرفية قياسية متضمنة مع معظم توزيعات Linux المتضمنة في macOS ، وهي متوفرة للتثبيت على Windows 10. وهو يتذكر الأوامر التي تكتبها ويقوم بتخزينها في ملف محفوظات. ربما تعرف بعض الأساسيات عن تاريخ bash ، لكنها أقوى بكثير مما قد تدركه.
اختصارات لوحة المفاتيح
للتمرير خلال سجل bash ، يمكنك استخدام عدد قليل من اختصارات لوحة المفاتيح المفيدة في bash. اضغط على هذه الاختصارات والأوامر التي استخدمتها مسبقًا ستظهر في الموجه.
- سهم للاعلى أو السيطرة + P: انتقل إلى الأمر السابق في السجل الخاص بك. اضغط على المفتاح عدة مرات للانتقال للخلف خلال الأوامر التي استخدمتها.
- السهم لأسفل أو السيطرة + N: انتقل إلى الأمر التالي في السجل الخاص بك. اضغط على المفتاح عدة مرات للمشي للأمام من خلال الأوامر التي استخدمتها.
- البديل + R: يمكنك التراجع عن أي تغييرات تطرأ على أمر سحبته من سجلك إذا كنت قد عدّلته في السطر الحالي.
لدى Bash أيضًا وضع "استدعاء" خاص يمكنك استخدامه للبحث عن الأوامر التي قمت بتشغيلها سابقًا ، بدلاً من التمرير خلالها واحدة تلو الأخرى.
- السيطرة + R: استدعي الأمر الأخير المطابق للأحرف التي تقدمها. اضغط على هذا الاختصار وابدأ في الكتابة للبحث في سجل bash لأمر.
- السيطرة + O: قم بتشغيل الأمر الذي وجدته مع Ctrl + R.
- السيطرة + G: اترك وضع البحث عن التاريخ بدون تشغيل أمر.
عرض التاريخ الخاص بك باش
يمكنك طباعة سجل باش بأكمله على الشاشة عن طريق تشغيل أمر واحد:
التاريخ
سترى قائمة بجميع الأوامر في سجل bash ، بالإضافة إلى رقم على يسار كل منها. إن الأمر الذي يحمل "1" بجانبه هو الأمر الأقدم في محفوظات bash ، بينما يكون الأمر الذي يحتوي على أعلى رقم هو أحدث.
يمكنك القيام بأي شيء تريده مع الإخراج. على سبيل المثال ، يمكنك توجيهها إلى البقرى
الأمر للبحث في سجل الأوامر الخاص بك.
التاريخ grep your_search
هل يمكن أيضا أن الأنابيب إلى ذيل
الأمر لعرض عدد صغير فقط من الأوامر الأخيرة التي قمت بتشغيلها. على سبيل المثال ، سيعرض الأمر التالي آخر 5 إدخالات في السجل الخاص بك.
التاريخ الذيل -5
تشغيل الأوامر من التاريخ الخاص بك
يمكن لـ Bash "توسيع" الأوامر السابقة بسرعة ، أو توسيعها وتعديلها. تُعرف هذه الميزة باسم "توسيع السجل" وتستخدم علامة تعجب ، تُعرف باسم "الانفجار". ما عليك سوى كتابتها في الموجه واضغط على Enter لتشغيلها وكأنك تشغّل أي أمر آخر.
لتشغيل أمر معين من السجل الخاص بك من خلال رقمه ، استخدم الأمر التالي:
!#
على سبيل المثال ، لنفترض أنك تريد تشغيل الأمر الثاني عشر من سجل bash. هذا هو الأمر مع "12" على يساره عند تشغيل التاريخ
أمر. ستكتب الأمر التالي.
!12
لإعادة تشغيل الأمر الأخير الذي قمت بتشغيله ، اكتب ما يلي. هذا له نفس تأثير الضغط على السهم لأعلى مرة واحدة لعرض الأمر السابق ثم الضغط على Enter.
!!
يمكنك أيضا الرجوع إلى أمر عدد معين من الخطوط مرة أخرى. فمثلا, !-2
سيقوم بتشغيل الأمر الثاني إلى آخر الأمر الذي قمت بتشغيله. !!
يعني نفس الشيء !-1
.
هذا التوسع يعمل في أي مكان على الخط. يمكنك إضافة أي شيء تريده قبل أو بعد !!
أو أي من التعبيرات الأخرى في هذا القسم. على سبيل المثال ، يمكنك كتابة الأمر التالي لإعادة تشغيل آخر أمر قمت بتشغيله سودو
, يعطيها امتيازات الجذر. هذا مفيد بشكل خاص إذا نسيت أن تضيف سودو
قبل تشغيل الأمر.
سودو !!
أو ، على سبيل المثال ، يمكنك إعادة تشغيل الأمر السابق وتوجيه الإخراج إلى grep للبحث عن بعض النص.
!! | نص grep
للبحث عن أمر في السجل الخاص بك وتشغيله ، اكتب ما يلي. سيقوم هذا بتشغيل الأمر الأخير الذي يطابق النص الذي تحدده:
!نص
لذا ، إذا كنت قد أجريت حديثًا أمرًا بدأ به بينغ
, يمكنك تشغيل الأمر التالي للبحث عنه. سيؤدي هذا إلى البحث عبر السجل الخاص بك ، وتحديد موقع أحدث أمر يبدأ بـ "متزمت
"، وتشغيلها على الفور:
!متزمت
يمكنك إلحاق : ع
إلى أي من التوسعات أعلاه وباش ستطبع الأوامر إلى المحطة دون تشغيلها. يكون هذا الأمر مفيدًا إذا كنت تريد تأكيد أنك تحدد الأمر الصحيح قبل تشغيله.
!12: ص
!!: ع
!النص: ع
إعادة استخدام الحجج من التاريخ الخاص بك
كما يتيح لك Bash تشغيل أمر جديد ، ولكن استخدام وسيطات من الأوامر السابقة في السجل الخاص بك. يمكن أن يساعدك هذا على إعادة استخدام الحجج الطويلة أو المعقدة بسرعة دون الحاجة إلى إعادة كتابتها.
الأمر! $
على سبيل المثال ، لنفترض أنك شغّلت الأمر touch / home / chris / some_long_file_name_you_dont_want_to_type_again
. أنت الآن تريد تشغيل الأمر nano / home / chris / some_long_file_name_you_dont_want_to_type_again
. بدلاً من كتابة كل شيء من الصفر ، يمكنك تشغيل:
نانو!
ال !$
سيجعل bash يقوم تلقائيًا بملء الوسيطة الأخيرة من الأمر السابق.
هذا فقط يملأ في الوسيطة الأخيرة. لذا ، إذا قمت بتشغيل ping google.com -c 4
ثم قم بتشغيل بينغ!
, هذا من شأنه فقط التوسع إلى "بينغ 4
".
لإصلاح هذا الموقف ، يمكنك استخدام الحيلة التالية لتوسيع الوسيطة الأولى على السطر ، بدلاً من الأخيرة:
الأمر!
لذا ، إذا ركضت ping google.com -c 4
ثم ركض بينغ!
, باش من شأنه توسيع هذا إلى "ping google.com "
.
لتعبئة جميع الوسائط المستخدمة في الأمر السابق بدلاً من مجرد وسيطة واحدة ، يمكنك استخدام ما يلي:
أمر !*
لذا ، إذا ركضت بينغ!
بدلاً من ذلك ، ستقوم bash بملء جميع الوسيطات التي استخدمتها في الأمر السابق تلقائيًا.
يمكنك استخدام نفس الخدعة التي تستخدمها لتشغيل الأوامر من السجل الخاص بك للحصول على الحجج منها. فقط استخدم النموذج التالي.
الأمر! abc: #
على سبيل المثال ، ركضنا الأمر sudo hostname ubuntu
سابقا. إذا قمنا بتشغيل الأمر التالي ، فستقوم bash بالبحث إلى الخلف خلال السجل للعثور على آخر أمر يبدأ بالحروف التي نكتبها ونملأ الحجة التي نحددها. لذا ، إذا ركضنا su: 2
, سيبحث bash مرة أخرى للعثور على الأمر الأخير الذي يبدأ بـ "سو
"وملء الحجة الثانية ، وهي"أوبونتو
".
تعمل الحيل الأخرى كما قد تتوقع. على سبيل المثال ، يؤدي استبدال الرقم بعلامة النجمة ، والمعروفة باسم حرف البدل ، إلى جعل bash يملأ جميع الوسيطات من الأمر:
الأمر! abc: *
أعد تشغيل الأمر السابق وقم بتعديله
كما يسمح لك Bash بإعادة تشغيل الأمر السابق وتحديد شيء يجب تغييره. يمكن أن يكون هذا مفيدًا لتصحيح خطأ مطبعي في أمر ما. على سبيل المثال ، سوف يقوم الأمر التالي بإعادة تشغيل الأمر السابق ، مع استبدال النص "اي بي سي
"في ذلك مع النص"XYZ
".
^ أ ب ج ^ س ع ص
على سبيل المثال ، إذا ركضت عن غير قصد ping gogle.com
, يمكنك بعد ذلك تشغيل ^ ^ جوج جوج
وباش سيدير الأمر ping google.com
في حين أن.
حيث يتم تخزين محفوظات الخاص بك و كيفية مسحها
يخزن shell bash محفوظات الأوامر التي قمت بتشغيلها في ملف محفوظات حساب المستخدم الخاص بك على ~ / .bash_history افتراضيًا. على سبيل المثال ، إذا كان اسم المستخدم الخاص بك هو bob ، فستجد هذا الملف على /home/bob/.bash_history.
نظرًا لأنه يتم تخزين السجل في ملف ، فإنه يستمر بين الجلسات. يمكنك تشغيل بعض الأوامر ، تسجيل الخروج ، العودة في اليوم التالي ، وستظل هذه الأوامر في ملف السجل الخاص بك جاهزة للعرض والاستخدام. يحتوي كل حساب مستخدم على ملف سجل خاص به مع سجل أوامر منفصل.
لمسح محفوظات bash ، يمكنك تشغيل الأمر التالي. يؤدي هذا إلى محو محتويات ملف .bash_history الخاص بحساب المستخدم الخاص بك:
التاريخ - ج
يتذكر Bash فقط عددًا محدودًا من الأوامر بشكل افتراضي ، مما يمنع زيادة حجم ملف السجل. يتم التحكم في عدد إدخالات محفوظات bash تذكر بواسطة HISTSIZE
متغير. الافتراضي هو عادة 500 أو 1000 إدخالات. يمكنك تشغيل الأمر التالي لعرض حجم محفوظات bash على النظام الخاص بك.
صدى $ HISTSIZE
لتعيين السجل الخاص بك إلى صفر ، قم بتشغيل الأمر التالي.
HISTSIZE = 0
بالنسبة للجلسة الحالية ، لن تخزن bash أي إدخالات السجل إلا إذا كان الأمر يشبه الأمر HISTSIZE = 1000
لتعيده إلى عدد معين من الإدخالات.
كيف تجاهل الفراغات وتكرارات
يتيح لك Bash تجاهل إدخالات السجل التي تبدأ بمسافة إذا قمت بتعيين HISTCONTROL
متغير ل ignorespace.
HISTCONTROL = ignorespace
اكتب مسافة قبل أمر قبل تشغيلها في shell bash وسيعمل الأمر بشكل طبيعي ، ولكن لن يظهر في السجل الخاص بك إذا كان لديك هذا المتغير ممكّنًا. يتيح لك هذا الاحتفاظ بسجل نظافتك قليلاً ، واختيار تشغيل الأوامر بدون ظهورها في السجل الخاص بك.
كما يسمح لك Bash بتجاهل الأوامر المكررة التي يمكن أن تفسد تاريخك. للقيام بذلك ، حدد HISTCONTROL
إلى ignoredups.
HISTCONTROL = ignoredups
لاستخدام كل من ignorespace
و ignoredups
الميزة ، تعيين HISTCONTROL
متغير ل ignoreboth.
HISTCONTROL = ignoreboth
لاحظ أن متغيرات bash التي تعينها ستستمر فقط لجلسة العمل الحالية. ستحتاج إلى إضافة هذه الملفات إلى ملف .bashrc الخاص بحساب المستخدم الخاص بك بحيث يتم تعيين هذه القيم تلقائيًا في كل جلسة يتم عرضها في bash ، إذا كنت تفضل ذلك.
يعتبر bash shell أداة معقدة تتضمن العديد من الخيارات أكثر من هذه. استشر أقسام باث التاريخ وتاريخ التاريخ التوسع في دليل bash الرسمي مزيد من المعلومات المفصلة وغيرها من الحيل المتقدمة التي يمكنك استخدامها.