سؤال كيف ترى الأمر موصلا إلى bash alias؟


افترض أن لدي اسم مستعار في shell bash. هل هناك أمر بسيط لطباعة الأوامر التي سيعمل عليها الاسم المستعار؟


258
2018-02-07 03:24


الأصل




الأجوبة:


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

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        echo "$REPLY";
        grep --color=auto "$@"
    }
}

342
2018-02-12 09:52



ما يجب القيام به عندما يحتوي اسم مستعار على MORE أسماء مستعارة - user251046
@ user251046 استمر في استخدامه type حتى تصل إلى شيء آخر غير الاسم المستعار ... - geirha
أنا أحب هذه الإجابة لأن type ستقوم بتحليل / تفسير أي اقتباسات ، حتى تتمكن من التأكد من صحة علامات الاقتباس. - wisbucky


فقط اكتب alias بينما في موجه شل. يجب إخراج قائمة بكافة الأسماء المستعارة النشطة حاليًا.

أو يمكنك الكتابة alias [command] لمعرفة ما اسم مستعار محدد ، على سبيل المثال ، إذا كنت تريد معرفة ما ls كان الاسم المستعار مستعارًا ، يمكنك فعله alias ls.


127
2018-02-07 03:30



أو اكتب alias ls لمعرفة ما هو على وجه التحديد ls هو اسم مستعار ل. - poolie
@ بولىى بالفعل. أعتقد أن السؤال هو أن نرى الكل الأسماء المستعارة ، على الرغم من ذلك ، وهذا هو السبب في أنني لم تفصيل أكثر على الأمر الاسم المستعار. - Thomas Ward♦
في حين أن هذا يعمل للأسماء المستعارة ، فإنه لا يعمل إذا قمت بتعريف وظيفة shell مخصصة. type ومع ذلك ، يعمل في كلتا الحالتين. - Sujay Phadke


انا فعلا احب السيطرة+البديل+E كما تعلمت من هذا الجواب. إنه "يوسع" سطر الأوامر المكتوب حاليًا ، مما يعني أنه ينفذ توسعًا مستعارًا (من بين أشياء أخرى).

ماذا يعني ذالك؟ يتحول أي اسم مستعار ، قد تكون مكتوبة حاليا على سطر الأوامر ، إلى ما يرمز إليه الاسم المستعار.

على سبيل المثال ، إذا كتبت:

$ ls

ثم اضغط السيطرة+البديل+E، يتم تحويلها إلى

$ ls --time-style=locale --color=auto

51
2018-02-13 17:52



هل هذا يعادل في توزيعات أخرى؟ - sepehr
sepehr يعمل على دبيان ، أفترض أنه ميزة bash ويجب أن يعمل على أي توزيع. - Der Hochstapler
أنت على حق ، وهو يعمل على باش ولكن لدي زش وأنها لا تعمل لسوء الحظ. - sepehr
كان مفيدا حقا. كان لدي هدف مختلف يتمثل في توسيع أحد أوامر bash السابقة التي تم تسجيلها في السجل ، مثل 394 ، حتى أتمكن من تعديلها أولاً قبل تنفيذ - XXL
كيفية تحقيق هذا على باش OSX؟ - Govind Rai


الإجابة الصحيحة بالمعنى الدقيق للكلمة هي استخدام مجموعة BASH_ALIASES ، على سبيل المثال:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

6
2018-01-13 12:12



لقد وجدت هذا مفيدًا في موقف أردت فيه الوصول البرمجي إلى البيان الفعلي الذي يكون مستعارًا بدون الأشياء المفيدة من حوله. - M. Justin
مفيد جدا ، شكرا! - Noldorin
هذا لا يعمل في zsh - ProGrammar
ProGrammar كان السؤال عن bash - ل zsh يجب أن تبحث عن أسئلة حول zsh - noonex


يمكنك استخدام which أمر.

إذا قمت بتعيين اسم مستعار لـ ls مثل ls -al ثم اكتب which ls، سترى:

ls: aliased to ls -al.


1
2017-08-05 07:36



باش لا which أمر. - geirha
لا يعمل بالنسبة لي .. - Chiel ten Brinke
انها تعمل بالنسبة لي. شكر - Indrajeet Gour
which طريقة سيئة للبحث عن الأسماء المستعارة كما هو موضح هنا: unix.stackexchange.com/questions/10525/...   لا يعمل لي حتى بالنسبة للأسماء المستعارة في bash على Ubuntu. - Sujay Phadke