سؤال كيف أقوم بإنشاء اسم مستعار باش دائم؟


أود إنشاء اسم مستعار لـ rm الأمر من أجل الحصول على رسالة تأكيد بعد تنفيذ هذا الأمر. لذلك أقوم بإنشاء اسم مستعار مثل هذا alias rm='rm -i'. ولكن بقدر ما أعرف هذا هو اسم مستعار مؤقت ويعيش حتى إغلاق المحطة.

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

bash: /home/bakhtiyor/.bashrc: Permission denied

عندما أركض ~/.bash_aliases أتلقى رسالة خطأ أخرى كالتالي:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

ما هي المشكلة الفعلية وكيف يمكنني حلها؟


308
2017-12-15 07:54


الأصل


كيف قمت بإنشاء اسم مستعار؟ - karthick87
@ karthick87. لقد قمت بتحديث سؤالي. - Bakhtiyor
إجابة - stackoverflow.com/a/2622711/1487102 - neaumusic


الأجوبة:


لإنشاء اسم مستعار بشكل دائم ، أضف الاسم المستعار الخاص بك .bashrc ملف

gedit ~/.bashrc

ثم أضف اسمك المستعار في الأسفل.

alt text

الآن تنفيذ . ~/.bashrc في المحطة الطرفية الخاصة بك (يجب أن يكون هناك مسافة بين . و ~/.bashrc.

الآن يمكنك التحقق من الاسم المستعار الخاص بك.

alt text


342
2017-12-15 08:24



@ karthick87 كتبته "الآن تنفيذ. ~ /. bashrc في محطة الخاص بك (يجب أن يكون هناك فجوة بين. و ~ /. bashrc.". لماذا هذه الخطوة ضرورية؟ - Geek
ماذا أول "." افعل في. ~ / .bashrc؟ - Zen
GeekZen "Execute" لم يكن المصطلح الصحيح. النقطة تعادل source. مع . ~/.bashrc، أنت مصدر باش الخاص بك. سيؤدي تنفيذ الملف إلى بدء عملية تابعة ، وتنفيذ الأوامر في هذه العملية ، ثم العودة. كل ما يتم في العملية الفرعية ليس له أي تأثير على العملية الرئيسية (باش التي قمت بتنفيذها). بدلاً من ذلك ، تعمل المصادر (بالنقاط) تمامًا كما لو أنك كتبت محتوى الملف في الجهاز. هذا ما تريده. .bashrc من مصادر في كل مرة تبدأ باش. إذا أجريت تغييرات ، فلن يتم تطبيقها حتى تبدأ bash أو مصدر جديد يدويًا. - Gauthier
ButtleButkus - قد ترغب في تغيير تفضيلات مستخدم واحد فقط بدلاً من النظام بأكمله. في أوبونتو ، ملف .bashrc على مستوى النظام هو /etc/bash.bashrc - WillC
هذا يعمل فقط جزئيا. أنا بحاجة إلى التنفيذ . ~/.bashrc في كل مرة أقوم بفتح المحطة. باستخدام OS X EI Captian (v10.11.6). - Shubham A.


هناك الكثير من الطرق لإنشاء اسم مستعار. الطرق الأكثر استخدامًا هي:

  1. إضافة الأسماء المستعارة مباشرة في الخاص بك ~/.bashrc ملف

    على سبيل المثال: إلحاق هذه الخطوط بـ ~/.bashrc ملف

    alias ll='ls -l'
    alias rm='rm -i'
    

    في المرة القادمة (بعد تسجيل الخروج أو الدخول أو الانتهاء . ~/.bashrc) عند الكتابة rm ال rm -i سيتم تنفيذ الأمر.

  2. تتيح لك الطريقة الثانية إنشاء ملف مستعار منفصل ، لذلك لن تضطر إلى وضعها .bashrc، ولكن إلى ملف من اختيارك. أولا ، تحرير الخاص بك ~/.bashrc ملف وإضافة أو uncomment السطور التالية ، إذا لم تكن بالفعل

    if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
    fi
    

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

    محتويات بلدي ~/.bash_aliases ملف:

    alias cs='cd;ls'
    

205
2017-12-15 08:21



+1 للاستخدام ~/.bash_aliases. - ændrük
صحيح ، باستخدام ملف آخر للأسماء المستعارة هو أكثر تنظيماً بكثير ، وهو محمول أيضًا بين التوزيعات. أستخدم هذا الملف لأن بعض الأسماء المستعارة غير كافية وهناك حاجة إلى وظيفة. لذلك ، يصبح الأمر أكثر تنظيماً إذا كنت تستخدم ملفًا لهذه المهمة بدلاً من ذلك. لدي اسم مستعار آخر -> alias aliases="xdg-open ~/.bash_aliases && source ~/.bash_aliases"لذلك استفاد الاسم المستعار من الادخار ، وإذا ارتكبت خطأً ما ، فسيتم الإعلان عنه. - erm3nda
بطريقة ما بعد أن أضفت الاسم المستعار مثل alias ls='ls -althr'، بعض العلامات المعطاة لن تصبح سارية المفعول ، في هذه الحالة لم يتم تفعيل العلامة التجارية. هل تعرف لماذا؟ - Sajuuk
بشكل افتراضي ~/.bashrc يحتوي على تضمين لـ ~/.bash_aliases، لا حاجة لتحريره. - Jaakko
ليس دائما ~ / .bashrc يحتوي على تضمين ل ~ / .bash_aliases كما كان الحال في حالتي مع Ubuntu terminal Windows 10 كان هذا الحل سهل للغاية. - Jose


المشكلة هي أنك تحاول تنفيذ ملف غير قابل للتنفيذ: يمكنك التحقق من ذلك من خلال:

ls -la ~/.bashrc
-rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc

ملاحظة لا يوجد حرف "x - القابل للتنفيذ" على العمود الأول (أذونات الملفات).

ملفات الملفات الشخصية ليست ملفات قابلة للتنفيذ ، بدلاً من تنفيذها تقوم بتحميلها مع:

source /home/bakhtiyor/.bashrc

أو

. /home/bakhtiyor/.bashrc

17
2017-12-15 10:24





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

source ~/.bashrc

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

أفترض أن الخطأ الثاني كان بسبب عدم وجود bash_aliases. غير مطلوب ، فقط أوصى للحفاظ على التغييرات الخاصة بك منفصلة ومنظمة. يتم استخدامه فقط في حالة وجوده ، ويمكنك رؤية الاختبار الخاص به في .bashrc:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

هذا يقول أنه إذا كان الملف ~ / .bash_aliases موجود ، ثم تشغيله.


15
2018-01-16 20:29



~/.bash_aliases أفضل. askubuntu.com/questions/194111/... - tomByrer
باستخدام source جعلت الأمر يعمل الأسماء المستعارة لي. +1 - dspacejs
فقط من أجل الكمال: النقطة الأولية على الخط . ~/.bash_aliases لديه نفس المعنى كأمر مدمج في shell source. أجد أن هذا هو الجواب الصحيح ، موضحًا ما يحدث. - Melebius


echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

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

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


8
2018-06-15 11:39



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


لقد قمت بعمل هذه الوظيفة البسيطة لكتابة اسم مستعار جديد لـ .bashrc بسرعة

##------------------------------------ ##
 #           -- new-alias --           #
 # creates new alias & writes to file  #
 #          $1 = alias new             #
 #          $2 = alias definition      #
##------------------------------------ ##
new-alias () { 
  if [ -z "$1" ]; then
    echo "alias name:"
    read NAME
  else
    NAME=$1
  fi

  if [ -z "$2" ]; then
    echo "alias definition:"
    read DEFINTION
  else
    if [ "$2" = "-cd" ]; then
      DEFINTION='cd '
    else
      DEFINTION=$2
    fi
  fi

  echo "alias $NAME='$DEFINTION'" >> ~/.bashrc
  . ~/.bashrc
}

5
2017-12-17 20:37



فكرة جيدة ، ولكن الإهمال باستخدام هذه الوظيفة قد يؤدي إلى الحضيض .bashrc مع حالات متعددة من alias أمر. تحتاج وظيفتك بالتأكيد إلى تنفيذ بعض الفحوص لتجنب مثل هذا التشويش. - Troublemaker-DV


إذا كنت تستخدم روبي ، يمكنك تثبيت الملقب باستخدام rubygem.

gem install aka2

استعمال

aka generate hello="echo helloworld" #add an alias
aka g hello="echo helloworld"  #add alias for lazy people

aka destroy hello #remove alias
aka d hello #remove alias for lazy people

سيعمل rubygem تلقائيًا على إنشاء ملف النقطة بحيث لا تحتاج إلى ذلك. تحقق من ذلك.


4
2018-01-21 14:14





أود أن أقترح استخدام /etc/bash.bashrc

يمكنك إضافة سطر في نهاية هذا الملف.

alias ok="ping google.com"

بعد وضع الأسماء المستعارة في كل سطر ، عليك إعادة التمهيد أو إعادة التسجيل.


0
2017-08-09 03:36



"أود أن أقترح .." ولماذا تقترح ذلك؟ - muru
يجب ألا تفسد ملف النظام إلا إذا كنت تريد تثبيت إعداد على مستوى النظام لجميع المستخدمين على وجه التحديد. على النظام الشخصي ، يكون الفرق هامشيًا ، ولكن بعدها يكون التعثر مع ملفات النظام أكثر تعقيدًا على الطريق ، لذلك يجب أن تفضل ملفات نقاطك الشخصية للتفضيلات الشخصية (وهذا يجعل من السهل نسخ الإعدادات في مكان آخر المستقبل ، أيضا). - tripleee
اعادة التشغيل؟ هذه نصيحة فظيعة حقا ، لا تفعل ذلك ، خاصة عندما source /etc/bash.bashrc يفعل كل ما تريد في هذا المثال. ولكن يجب أن تستخدم ~/.bashrc أو ~/.bash_aliases في حين أن - Xen2050
@ Xen2050 ، اقترحت إعادة تشغيل لإظهار أنه يعمل بعد إعادة التشغيل / relogin. بالمناسبة ، حتى نافذة محطة نظيفة أخرى ستعمل أيضا. - Fahad Ahammed
يمكنك الترقية إلى نواة جديدة دون إعادة التشغيل ، هذه ليست نوافذ قديمة ؛-) - Xen2050