عمل سريع وفعال في سطر الأوامر

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


يجب أن تبدأ المحطة على الفور


كم من الوقت تقضيه لإطلاق محطة؟ وآخر واحد؟ لفترة طويلة استخدمت اختصار Ctrl + Alt + T لإطلاق محطة وأعتقد أنها سريعة. عندما قمت بالترحيل من Openbox إلى i3 ، بدأت في تشغيل جهاز طرفية عبر Win + Enter ، فقد تم تنفيذ هذا الربط. انت تعرف ماذا؟ الآن لا أعتقد أن Ctrl + Alt + T سريع بما فيه الكفاية.


بالطبع ، ليس الأمر تسريعًا بالميلي ثانية ، ولكنك تفتح محطة على مستوى ردود الفعل ، غافلة تمامًا عن ذلك.


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


Zsh بدلا من باش


هذا هو موضوع holywar ، وأنا أعلم. يجب تثبيت Zsh لثلاث ميزات على الأقل: الإكمال التلقائي المتقدم وتصحيح الخطأ المطبعي وإكمال اسم المسار المتعدد: عندما تقوم علامة تبويب واحدة بتحويل /u/s/d إلى /usr/share/doc . انتقل Arch Linux بالفعل إلى Zsh في القرص المضغوط الخاص بالتثبيت. آمل أن تصبح Zsh قذيفة افتراضية في أوبونتو. ستكون هذه لحظة تاريخية.


البدء في استخدام Zsh ليس بالأمر الصعب على الإطلاق. مجرد تثبيته عبر مدير الحزمة والعثور على التكوين جميلة. أوصي بأخذ التكوين المستخدم في Arch Linux:


 $ wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc 

الشيء الوحيد المتبقي هو تغيير shell الافتراضي وإعادة تسجيل الدخول.


 $ chsh -s $(which zsh) 

هذا كل شيء ، فقط استمر في العمل كما لم يحدث شيء.


كيف ينبغي أن تبدو قذيفة سريعة


Shell shell عبارة عن جزء صغير من النص يظهر في المحطة في بداية سطر الأوامر. يجب تكوينه لنوع عملك. يمكنك أن ترى ذلك على أنه لوحة القيادة للمركبة. من فضلك ، ضع بعض المعلومات المفيدة ، دعها تساعدك على التنقل! اجعلها مفيدة خاصة إذا كنت ترى كل يوم!


يجب أن تكون ملونة شل موجه. لا توافق؟ حاول حساب عدد الأوامر التي تم تنفيذها في هذه المحطة:



والآن مع اللون:



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


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


إذا كنت تتصل بالخوادم التي تستخدم ssh ، فأنت بحاجة إلى تمييز الأصداف المحلية والبعيدة. لهذا الغرض ، يجب أن يحتوي موجه shell على اسم مضيف ، أو حتى أفضل - يشير إلى اتصال ssh.


يمكن أن تظهر مطالبة Shell رمز إنهاء الأمر الأخير. تذكر أن رمز إنهاء الصفر يعني أن الأمر قد تم بنجاح ، وأن الأمر غير صفري - تم إنهاء الأمر بنجاح. يمكنك الحصول على رمز خروج الأمر الأخير عبر echo $? ، ولكن كتابة كل ما هو لعنة طويلة. دع القشرة تظهر لك خروجًا غير ناجح بدلاً من ذلك.


إذا كنت تعمل مع Git repos ، فسيكون من المفيد رؤية حالة المخزون في shell shell: الفرع الحالي وحالة دليل العمل. ستوفر بعض الوقت على git status git branch وأوامر git branch ولن تلتزم بفرع خاطئ. نعم ، قد يستغرق حساب الحالة وقتًا طويلاً في مستودعات الدهون ، لكن بالنسبة لي فإن الايجابيات تفوق السلبيات.


يضيف بعض الأشخاص ساعة إلى موجه shell أو حتى اسم محطة افتراضية (tty) ، أو بعض التنازلات التعسفية. هذا كل شيء لا لزوم له. من الأفضل الاحتفاظ بمساحة كبيرة للأوامر.


وهذا ما يبدو لي موجه شل في ظروف مختلفة:



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


لذلك ، كيف ينبغي أن تنفذ كل هذه الأشياء في. .zshrc ؟ يقوم المتغير PROMPT بتعيين RPROMPT الأيسر ويقوم RPROMPT بتعيين RPROMPT الأيمن. يحدد متغير EUID حالة المستخدم (عادي أو جذري) SSH2_CLIENT وجود SSH2_CLIENT أو SSH2_CLIENT إلى اتصال ssh. حتى نتمكن من الحصول على قالب:


 if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi else # not SSH if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi fi 

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


خلاصة القول:


  • موجه قذيفة الملونة أمر لا بد منه.
  • الحد الأدنى المطلوب هو دليل العمل الحالي.
  • يجب أن تكون قذيفة الجذر مرئية بوضوح.
  • لا يهتم اسم المستخدم بحمولته إذا كنت تستخدم حسابًا واحدًا فقط.
  • يعد اسم المضيف مفيدًا إذا كنت تتصل بالخوادم عبر ssh ، فهو ليس إلزاميًا إذا لم يكن كذلك.
  • من المفيد رؤية رمز خروج غير ناجح للأمر الأخير.
  • حالة Git repo توفر الوقت على git status git branch وأوامر git branch وتجلب مضمونة.

استخدام بكثافة تاريخ القيادة


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


ربما تكون قادرًا بالفعل على حفر المحفوظات باستخدام Ctrl + R keybinding. لسوء الحظ ، له عيبان:


  1. يجب أن يكون سطر الأوامر فارغًا لبدء البحث ، أي في حالة "بدأ أحد بكتابة أمر - يتم تذكره عن البحث" ، يجب عليك تنظيف كتابتك أولاً ، ثم اضغط على Ctrl + R وكرر الإدخال. هذا يستغرق وقتا طويلا.
  2. البحث الأمامي لا يعمل بشكل افتراضي لأن Ctrl + S توقف المحطة.

النوع الأكثر سرعة وسهولة في البحث يعمل بهذه الطريقة:


  1. تبدأ في كتابة أمر ،
  2. تتذكر البحث ،
  3. تضغط على مفتاح الاختصار ، وتقدم لك shell الأوامر من التاريخ الذي بدأ بنفس الطريقة.

على سبيل المثال ، تريد مزامنة دليل محلي مع دليل بعيد باستخدام Rsync وقمت بذلك بالفعل قبل ساعتين. تكتب rsync ، اضغط على مفتاح التشغيل السريع مرة واحدة أو مرتين ويكون الأمر المطلوب جاهزًا للتشغيل. لا تحتاج إلى تشغيل وضع البحث أولاً ، لا تتغير مطالبة shell إلى (reverse-i-search)': ، ولا شيء ينتقل إلى أي مكان. أنت تقوم فقط بالتمرير عبر السجل بنفس الطريقة التي تضغط بها على الأسهم للتمرير خلال الأوامر التي تم إدخالها مسبقًا ولكن مع تصفية إضافية. هذا رائع لعنة ويوفر الكثير من الوقت.


لا يعمل هذا النوع من البحث بشكل افتراضي في Bash و Zsh ، لذلك يجب عليك تمكينه يدويًا. لقد اخترت PgUp للبحث إلى الأمام و PgDown للبحث إلى الخلف. لا يزال الوصول إليهم بعيدًا ، لكنني ارتكبت عادةً. ربما في وقت لاحق سأنتقل إلى شيء أقرب مثل Ctrl + P و Ctrl + N.


بالنسبة إلى Bash ، يلزمك إضافة بضع سلاسل إلى /etc/inputrc من ~/.inputrc :


 "\e[5~": history-search-backward "\e[6~": history-search-forward 

إذا كنت قد حصلت على .zshrc أجنبي كامل ، فمن المحتمل جدًا أن تقوم PgUp و PgDown بهذا العمل بالفعل. إذا لم يكن كذلك ، فأضف إلى ~/.zshrc :


 bindkey "^[[5~" history-beginning-search-backward # pg up bindkey "^[[6~" history-beginning-search-forward # pg down 

تحتوي أسماك Ipython وقذائفها بالفعل على مثل هذا البحث مرتبط بالسهام ↑ ↓. أعتقد أن العديد من المستخدمين هاجروا إلى Fish لمجرد سلوك الأسهم. بالطبع ، من الممكن ربط الأسهم بهذه الطريقة في كل من Bash و Zsh إذا كنت ترغب في ذلك. استخدم هذا في /etc/inputrc من ~/.inputrc :


 "\e[A":history-search-backward "\e[B":history-search-forward 

وهذا في ~/.zshrc :


 autoload -U up-line-or-beginning-search autoload -U down-line-or-beginning-search zle -N up-line-or-beginning-search zle -N down-line-or-beginning-search bindkey "^[[A" up-line-or-beginning-search bindkey "^[[B" down-line-or-beginning-search 

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


انضم إلى الأوامر التي تتبع بعضها دائمًا:


 # ip link set eth1 up && dhclient eth1 # mkdir /tmp/t && mount /dev/sdb1 /tmp/t 

تتيح لك المسارات المطلقة بدلاً من النسبية تشغيل أمر من أي دليل:
vim ~/.ssh/config بدلاً من vim .ssh/config ، systemd-nspawn /home/chroot/stretch بدلاً من systemd-nspawn /home/chroot/stretch systemd-nspawn stretch وما إلى ذلك.


استخدام أحرف البدل يجعل أوامرك أكثر عالمية. أنا عادة استخدامه بالتزامن مع chmod و chown .


 # chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq 

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


هنا هو الحد الأدنى المطلوب.


البديل +. - يستبدل الوسيطة الأخيرة من الأمر السابق. كما يمكن الوصول إليها باستخدام !$ .
Ctrl + A ، Ctrl + E - ينتقل إلى بداية ونهاية السطر على التوالي.
Ctrl + U ، Ctrl + Y - قص ولصق. يكون مفيدًا عند كتابة أمر معقد وتلاحظ أنك بحاجة إلى تنفيذ أمر آخر أولاً. هم ، حيث لحفظ المدخلات الحالية؟ هنا
Ctrl + W - يقتل كلمة واحدة قبل المؤشر. مسح الخط عند الضغط عليه مع الاستمرار. بشكل افتراضي ، يتم حفظ الإدخال في الحافظة (المستخدمة في Ctrl + Y).
Ctrl + K - يقطع جزء السطر بعد المؤشر ، ويضيفه إلى الحافظة. Ctrl + A Ctrl + K يمسح الخط بسرعة.
PgUp ، PgDown ، Ctrl + R - سجل البحث.
Ctrl + L مسح المحطة.


استجابة لوحة المفاتيح


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


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


الأمر السحري هو:


 $ xset r rate 190 20 

190 - مدة التأخير بالميلي ثانية ،
20 - التردد في التكرار في الثانية.


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


من أجل حفظ المعلمات تحتاج إلى إضافة هذا الأمر في مكان ما في X تلقائي.


إشارة الخروج العملية


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


هناك العديد من الأدوات لهذا الغرض: إخطار الإرسال ، dzen2 ، صوت تنبيه ، تشغيل ، جدار. كلهم جيدون بطريقة أو بأخرى ، ولكن لا تعمل مع اتصال ssh. لهذا السبب أستخدم صوت تنبيه الطرفي:


 $ long-running-command; echo $'\a' 

يحتوي ترميز ASCII على 0x7 حرفًا يسمى الجرس . يتم استخدامه لتصفير مكبر صوت الكمبيوتر. سماعات الكمبيوتر ليست شيئًا عصريًا ، فليس كل جهاز كمبيوتر لديه ولا يسمع في سماعات الرأس. لهذا السبب تستخدم بعض المحطات ما يسمى الجرس المرئي. يمكنني استخدام urxvt ، وهو يؤدي الجرس المرئي عن طريق رفع علم الطوارئ. ما هذا؟ إنه شيء يستخدم عندما تريد النافذة إخبارك بأنه أمر ملح.


يمكنك التحقق من كيفية تفاعل جهازك على شخصية الجرس الآن:


 $ sleep 3; echo $'\a' 

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


لسوء الحظ ، لا يمكن لكل محطة عرض الجرس المرئي عن طريق رفع علم الطوارئ. لقد راجعت الأكثر شعبية.


المحاكي الطرفيجرس مرئي كعلم عاجل
كونسوليقد يتم تمكين في التفضيلات
urxvtنعم
xfce4-محطةقد يتم تمكين في التفضيلات
تيرملا
مصطلح بارد الرجعيةلا
lxterminalلا
جنوم الطرفيةلا

يعد كتابة echo $'\a' طويلًا جدًا ، لذلك قمت بإنشاء اسم مستعار wake .


الأسماء المستعارة


بشكل افتراضي ، تعمل الأوامر cp و scp و rm بشكل غير متكرر وتمتص! انها تركة سيئة لعنة! حسنا ، قد تكون ثابتة باستخدام الأسماء المستعارة. ولكن أولاً ، دعونا ننظر عندما يكون السلوك غير العودي مفيدًا.


 $ mkdir foodir $ cp * foodir 

سيتم نسخ الملفات فقط في foodir ، ولكن ليس الدلائل. نفس الموقف يذهب مع rm :


 $ rm * 

سيحذف فقط الملفات والروابط ، لكن يحتفظ بالأدلة. ولكن كم مرة تحتاج هذه الميزة؟ أحب أن أعتقد أن cp و rm تعمل دائما بشكل متكرر.


حسنا ، ولكن ماذا عن الأمن؟ ربما السلوك غير العودي يحمي ملفاتك؟ هناك حالة واحدة عندما يكون لديك ارتباط إلى الدليل وتريد إزالة هذا الارتباط ، لكن مع الاحتفاظ بالدليل. إذا تم إلحاق شرطة مائلة (عن قصد أو من حين لآخر) إلى اسم الدليل وكان وضع العودية قيد التشغيل عبر -r ، فسيصبح الدليل فارغًا! ! إفراغ


 $ ln -s foodir dir_link $ rm -r dir_link/ 

بدون - -r يجادل أنه سوف يسيء ولا يزيل أي شيء. لذلك ، rm العودية يزيد من خطر فقدان البيانات قليلا.


قمت بتشغيل الوضع cp لـ cp و scp و rm ، وأضفت أيضًا -p لـ mkdir لإنشاء دلائل متداخلة بسهولة.


 alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p' 

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


الأكثر شعبية هي الأسماء المستعارة ls وربما تستخدمها بالفعل:


 alias ls='ls -F --color=auto' alias la='ls -A' alias ll='ls -lh' alias lla='ll -A' 

أيضا grep الملونة جميلة أكثر بكثير من عديم اللون:


 alias grep='grep --colour=auto' 

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


المس الكتابة


هذا واضح ، لكنني أذكركم: أن الكتابة باللمس تساعد على الكتابة بشكل أسرع. سيكون الأمر صعبًا في البداية ، لكنك ستتغلب على الحدود بمرور الوقت.


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


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


هذا هو كل شيء لهذا اليوم


آمل أن تساعدك هذه النصائح حقًا. حظا سعيدا

Source: https://habr.com/ru/post/ar481940/


All Articles