สร้างชื่อแทนเชลล์หลายรายการพร้อมกัน


8

ฉันต้องการแทรกนามแฝงในรูปแบบที่แตกต่างกันของการสะกดคำเช่นcatคำสั่ง ฉันสามารถใช้สัญลักษณ์สำหรับ 'หรือ' หรือควรจะอยู่ในบรรทัดใหม่ได้หรือไม่?

alias at|cart|cst '/bin/cat'

7
เตือนฉันถึงนามแฝงที่ฉันมี:alias kk='ll'
pLumo

14
ฉันจะไม่แนะนำให้ใช้เป็นชื่อแทนสำหรับat catมีคำสั่งจริงatสำหรับการตั้งเวลาเนื้อหา: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

คำตอบ:


17

ความช่วยเหลือสำหรับaliasระบุว่าสามารถกำหนดชื่อแทนหลายรายการพร้อมกันได้:

alias: alias [-p] [name[=value] ... ]
    Define or display aliases.

    Without arguments, `alias' prints the list of aliases in the reusable
    form `alias NAME=VALUE' on standard output.

    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.

ดังนั้นคุณสามารถใช้การขยายรั้งเพื่อสร้างname=valueคู่:

alias {at,cart,cst}='/bin/cat'

ดังนั้น:

$ alias {at,cart,cst}='/bin/cat'
$ type at cart cst
at is aliased to `/bin/cat'
cart is aliased to `/bin/cat'
cst is aliased to `/bin/cat'

ที่กล่าวว่าให้ดูที่ zsh ซึ่งมีการแก้ไขการพิมพ์ผิดที่มีอยู่ภายใน (ซึ่งจะไม่ช่วยatแต่จะช่วยคนอื่น ๆ ):

% setopt correct
% sl
zsh: correct `sl' to `ls' [nyae]? y
% setopt correctall
% ls x.v11r4
zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n
/usr/princton/src/x.v11r4 not found
% ls /etc/paswd
zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y
/etc/passwd

หากคุณกดyเมื่อเชลล์ถามคุณว่าคุณต้องการแก้ไขคำหรือไม่คำนั้นจะถูกแก้ไข หากคุณกดnมันจะถูกทิ้งให้อยู่ตามลำพัง การกดaยกเลิกคำสั่งและการกดeจะนำบรรทัดขึ้นมาเพื่อแก้ไขอีกครั้งในกรณีที่คุณยอมรับว่าคำนั้นสะกดผิด แต่คุณไม่ชอบการแก้ไข


7

ฉันไม่คิดว่าคุณสามารถกำหนดชื่อแทนหลายรายการพร้อมกันได้
แต่คุณสามารถวนซ้ำตามรายการดังนี้:

for a in cart xat vat xst cst vst dog; do alias "$a"='/bin/cat'; done

ตรวจสอบให้แน่ใจว่าไม่ได้ใช้นามแฝงโดยโปรแกรมอื่น (เช่น atในตัวอย่างของคุณ)


ขอบคุณสำหรับคำตอบมันใช้งานได้ดี ฉันมีหนึ่งในเครื่อง Linux ที่มี tsch เป็นค่าเริ่มต้น ฉันลองสิ่งนี้: foreach x (cst cart); alias $ x = '/ bin / cat'; end
Josef Klimuk

2
@JosefKlimuk: ดูเหมือนว่ามันจะคุ้มค่าคำตอบของตัวเอง :-)
David Foerster

@ David Foerster ฉันควรถามเป็นคำถามอิสระหรือไม่
Josef Klimuk

2
@JosefKlimuk: ไม่ฉันหมายความว่าคุณควรเขียนคำตอบที่ถูกต้องสำหรับคำถามนี้ตามความคิดเห็นก่อนหน้าของคุณ
David Foerster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.