الأوامر البديلة في Bash

من موسوعة حسوب
مراجعة 14:02، 19 أغسطس 2018 بواسطة أسامه-دمراني (نقاش | مساهمات) (إدخال 2.0 محتوى وتنسيق وتصنيفات)

يسمح الأمر البديل (Alias) بوضع كلمة واحدة مكان مقطع نصي (string)، وذلك إن استُخدم كأول كلمة من أمر بسيط، وتحتفظ الصدفة بقائمة من الأوامر البديلة التي يمكن ضبطها وإلغاء ضبطها بأمريْ alias و unalias. اكتب alias في سطر الأوامر لترى قائمة من الأوامر البديلة المعرَّفة للصدفة الحالية:

hsoub: ~> alias
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias PAGER='less -r'
alias Txterm='export TERM=xterm'
alias XARGS='xargs -r'
alias cdrecord='cdrecord -dev 0,0,0 -speed=8'
alias e='vi'
alias egrep='grep -E'
alias ewformat='fdformat -n /dev/fd0u1743; ewfsck'
alias fgrep='grep -F'
alias ftp='ncftp -d15'
alias h='history 10'
alias fformat='fdformat /dev/fd0H1440'
alias j='jobs -l'
alias ksane='setterm -reset'
alias ls='ls -F --color=auto'
alias m='less'
alias md='mkdir'
alias od='od -Ax -ta -txC'
alias p='pstree -p'
alias ping='ping -vc1'
alias sb='ssh blubber'
alias sl='ls'
alias ss='ssh octarine'
alias tar='gtar'
alias tmp='cd /tmp'
alias unaliasall='unalias -a'
alias vi='eval `resize`;vi'
alias vt100='export TERM=vt100'
alias which='type'
alias xt='xterm -bg black -fg white &'

hsoub ~>

وتُستخدم الأوامر البديلة في تحديد الإصدار الافتراضي لأمر موجود على نظامك بأكثر من إصدار، أو في تحديد الخيارات الافتراضية لأمر ما، كما يمكن استخدامها في تصحيح الهجاء الخاطئ. وتُفحص أول كلمة من كل أمر بسيط إن كانت غير مُقتبسة -ليست بين علامات تنصيص- بحثًا عن أمر بديل، فإن احتوت على أمر بديل فتُستبدل الكلمة ليحل محلها نص الأمر البديل. وقد يحتوي اسم الأمر البديل ونص الاستبدال على مُدخلات للصدفة مثل محارف الصدفة الخاصة (shell metacharacters) باستثناء أن اسم الأمر البديل قد يحتوي على =.

وتُفحص أول كلمة من نص الاستبدال أيضًا بحثًا عن أمر بديل، لكن الكلمة التي تطابق أمرًا بديلًا يوسّع أثناء قراءتها فإنها لا توسَّع مرة أخرى، هذا يعني أنك قد تجعل ls أمرًا بديلًا لأمر ls -F مثلًا ولن تحاول Bash أن توسع نص الاستبدال بشكل عكسي (recursively). وتُفحص الكلمة التالية للأمر البديل داخل نص الأمر بحثًا عن توسع لأمر بديل إن كان آخِر محرف من قيمة الأمر البديل هو محرف مسافة (space) أو جدول (tab). ولا توسع الأوامر البديلة إن كانت الصدفة غير تفاعلية ما لم يُضبط خيار expand-aliases باستخدام أمر shopt.

إنشاء الأوامر البديلة وحذفها

تُنشأ الأوامر البديلة باستخدام أمر alias، ولإنشاء أمر بديل بشكل دائم أدخِل alias في أحد ملفات تهيئة الصدفة (shell initialization files) الخاصة بك، وإن كنت قد أدخلت الأمر البديل في سطر الأوامر فلن يتم التعرف عليه إلا داخل الصدفة الحالية.

hsoub ~> alias dh='df -h'

hsoub ~> dh
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda7             1.3G  272M 1018M  22% /
/dev/hda1             121M  9.4M  105M   9% /boot
/dev/hda2              13G  8.7G  3.7G  70% /home
/dev/hda3              13G  5.3G  7.1G  43% /opt
none                  243M     0  243M   0% /dev/shm
/dev/hda6             3.9G  3.2G  572M  85% /usr
/dev/hda5             5.2G  4.3G  725M  86% /var

hsoub ~> unalias dh

hsoub ~> dh
bash: dh: command not found

hsoub ~>

تقرأ Bash سطرًا كاملًا على الأقل من المدخلات قبل تنفيذ أي أوامر على ذلك السطر، ولا توسَّع الأوامر البديلة إلا حين يُقرأ أمر ما وليس عند تنفيذه، لهذا فإن تعريف الأمر البديل الذي يظهر على نفس السطر كأمر آخر لا يكون له تأثير حتى يُقرأ السطر التالي من المدخلات. ولا تتأثر الأوامر التي تتبع تعريف الأمر البديل على ذلك السطر بالأمر البديل الجديد، يمثل هذا السلوك مشكلة أيضًا عند تنفيذ الدوال (functions). وتوسَّع الأوامر البديلة حين يُقرأ تعريف دالة جديدة وليس عند تنفيذها، ذلك أن الدالة نفسها هي أمر مجمَّع (compound command). وكنتيجة لذلك لا تكون الأوامر البديلة المحددة في دالةٍ متاحةً حتى بعد تنفيذ تلك الدالة. لكن لكي تكون بمأمن ضع محددات الأوامر البديلة في سطر منفصل ولا تستخدم أمر alias في أوامر مجمعة. أيضًا، لا ترث العمليات الفرعية الأوامر البديلة، وكذلك لا تتعرف صدفة بورن sh على الأوامر البديلة.

الدوال أسرع

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

انظر أيضًا

مصادر