Tạo nhiều bí danh shell cùng một lúc


8

Tôi muốn chèn vào bí danh các biến thể có thể khác nhau của chính tả, ví dụ, catlệnh. Tôi có thể làm điều đó bằng cách sử dụng một số biểu tượng cho 'hoặc' hoặc nó nên ở trên một dòng mới?

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

7
Nhắc nhở tôi về một bí danh tôi có:alias kk='ll'
pLumo

14
Tôi không khuyên bạn nên sử dụng atnhư một bí danh cho cat. Có một lệnh thực tế atđể lên lịch các công cụ: Askubfox.com/a/339301/295286
Sergiy Kolodyazhnyy

Câu trả lời:


17

Trợ giúp aliaschỉ ra rằng nó có thể gán nhiều bí danh cùng một lúc:

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.

Vì vậy, bạn có thể sử dụng mở rộng cú đúp để tạo các name=valuecặp:

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

Vì thế:

$ 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'

Điều đó nói rằng, hãy nhìn vào zsh, có tích hợp sửa lỗi chính tả (điều này sẽ không giúp ích gì at, nhưng nó sẽ giúp ích cho những người khác):

% 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

Nếu bạn nhấn ykhi shell hỏi bạn có muốn sửa một từ không, nó sẽ được sửa. Nếu bạn nhấn n, nó sẽ được để lại một mình. Nhấn phím ahủy bỏ lệnh và nhấn eđưa dòng lên để chỉnh sửa lại, trong trường hợp bạn đồng ý từ đó viết sai chính tả nhưng bạn không thích sửa.


7

Tôi không nghĩ bạn có thể gán nhiều bí danh cùng một lúc.
Nhưng bạn có thể lặp qua một danh sách như thế này:

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

Đảm bảo rằng các bí danh chưa được sử dụng bởi các chương trình khác (như attrong ví dụ của bạn).


Cảm ơn câu trả lời nó hoạt động tốt. Tôi có một trong những máy linux của tôi với tsch là mặc định. Tôi đã thử điều này: foreach x (cst cart); bí danh $ x = '/ bin / cat'; end.
Josef Klimuk

2
@JosefKlimuk: Nghe có vẻ đáng để trả lời. :-)
David Foerster

@David Foerster, tôi có nên hỏi nó như một câu hỏi độc lập không?
Josef Klimuk

2
@JosefKlimuk: Không. Ý tôi là bạn nên viết một câu trả lời thích hợp cho câu hỏi này dựa trên nhận xét trước đó của bạn.
David Foerster
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.