Câu hỏi Làm thế nào để xem lệnh gắn liền với một bí danh bash?


Giả sử tôi có một bí danh trong bash shell. Có một lệnh đơn giản để in ra lệnh nào bí danh sẽ chạy?


258
2018-02-07 03:24


gốc




Các câu trả lời:


Các type xây dựng là hữu ích cho việc này. Nó sẽ không chỉ cho bạn biết về bí danh, mà còn có chức năng, nội trang, từ khóa và lệnh ngoài.

$ 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



phải làm gì khi bí danh chứa bí danh THÊM? - user251046
@ user251046 tiếp tục sử dụng type cho đến khi bạn nhấn cái gì đó khác với bí danh ... - geirha
Tôi thích câu trả lời này vì type sẽ phân tích cú pháp / giải thích bất kỳ dấu ngoặc kép nào, vì vậy bạn có thể chắc chắn rằng dấu ngoặc kép là đúng. - wisbucky


Chỉ loại alias trong khi tại dấu nhắc Shell. Nó sẽ xuất danh sách tất cả các bí danh hiện đang hoạt động.

Hoặc, bạn có thể nhập alias [command] để xem bí danh cụ thể được đặt bí danh là gì, ví dụ: nếu bạn muốn tìm hiểu ls bí danh đã được đặt bí danh, bạn có thể làm alias ls.


127
2018-02-07 03:30



Hoặc nhập alias ls để tìm hiểu cụ thể ls được đặt bí danh. - poolie
@poolie Thật vậy. Tôi nghĩ câu hỏi là để xem tất cả các các bí danh, mặc dù, đó là lý do tại sao tôi đã không xây dựng thêm về lệnh bí danh. - Thomas Ward♦
trong khi điều này làm việc cho các bí danh, nó không hoạt động nếu bạn đã định nghĩa một hàm shell tùy chỉnh. type tuy nhiên, hoạt động trong cả hai trường hợp. - Sujay Phadke


Tôi thật sự thích Ctrl+Alt+E như tôi đã học được từ câu trả lời này. Nó "mở rộng" dòng lệnh hiện đang gõ, có nghĩa là nó thực hiện mở rộng bí danh (trong số những thứ khác).

Điều đó nghĩa là gì? Nó biến bất kỳ bí danh, mà có thể hiện đang được viết trên dòng lệnh, vào những gì mà bí danh đại diện.

Ví dụ: nếu tôi nhập:

$ ls

và sau đó nhấn Ctrl+Alt+E, nó được biến thành

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

51
2018-02-13 17:52



điều này có tương đương với các bản phân phối khác không? - sepehr
@sepehr Hoạt động trên Debian, tôi cho rằng đó là tính năng bash và nên hoạt động trên bất kỳ phân phối nào. - Der Hochstapler
bạn nói đúng, nó hoạt động trên bash nhưng tôi có zsh và nó không hoạt động không may. - sepehr
thực sự hữu ích. Tôi đã có một mục tiêu khác là mở rộng một trong các lệnh bash trước đó được ghi lại trong lịch sử, tức là, 394, để tôi có thể chỉnh sửa nó trước khi thực hiện - XXL
Làm thế nào để thực hiện điều này trên bash OSX? - Govind Rai


Nói đúng câu trả lời là sử dụng mảng BASH_ALIASES, ví dụ:

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

6
2018-01-13 12:12



Tôi thấy điều này hữu ích trong một tình huống mà tôi muốn truy cập có lập trình vào câu lệnh thực tế được đặt bí danh mà không có những thứ hữu ích về con người xung quanh nó. - M. Justin
Rất hữu ích, cảm ơn! - Noldorin
điều này không hoạt động trong zsh - ProGrammar
@ProGrammar câu hỏi là về bash - cho zsh bạn nên tìm câu hỏi về zsh - noonex


Bạn có thể sử dụng which chỉ huy.

Nếu bạn đặt bí danh cho ls như ls -al và sau đó nhập which ls, Bạn sẽ thấy:

ls: aliased to ls -al.


1
2017-08-05 07:36



bash không có which chỉ huy. - geirha
Không làm việc cho tôi .. - Chiel ten Brinke
Nó làm việc cho tôi. cảm ơn - Indrajeet Gour
which là một cách xấu để tra cứu bí danh như được giải thích ở đây: unix.stackexchange.com/questions/10525/…   Nó thậm chí không làm việc cho tôi cho các bí danh trong bash trên Ubuntu. - Sujay Phadke