Lệnh bí danh sẽ dùng để làm gì?


28

Ai đó có thể cho tôi biết lệnh thiết bị đầu cuối bí danh lllà gì không? Tất cả tôi có thể tìm thấy trực tuyến là rất nhiều người nói rằng nó là một bí danh cho ls -lhay ls -lahay ls -ltr. Nhưng điều đó đơn giản là sai. Kết quả trông khác nhau. Có cách nào để xác định vị trí llvà nhìn vào cú pháp của nó?

Câu trả lời:


76

Bạn có thể sử dụng các lệnh aliashoặc typeđể kiểm tra một bí danh cụ thể có nghĩa là gì:

$ alias ll
alias ll='ls -alF'

$ type ll
ll is aliased to `ls -alF'

Tuy nhiên, lưu ý rằng các bí danh có thể sử dụng các bí danh khác, vì vậy bạn có thể phải kiểm tra nó một cách đệ quy, ví dụ trong trường hợp ll, bạn cũng nên kiểm tra lslệnh mà nó gọi:

$ alias ls
alias ls='ls --color=auto'

$ type ls
ls is aliased to `ls --color=auto'

Vì vậy, llthực sự có nghĩa là:

ls --color=auto -alF

10
Lưu ý rằng trong trường hợp chung, một lệnh có thể có một số định nghĩa đồng thời. type -a commandnamesẽ tiết lộ tất cả - nó sẽ cho bạn biết nếu lệnh là một hoặc nhiều bí danh, hàm, dựng sẵn hoặc một hoặc nhiều tệp thực thi trong PATH của bạn, theo thứ tự ưu tiên đó. Điều này hỗ trợ cho việc hiểu tại sao, ví dụ, không định nghĩa một lệnh không trả lại tất cả các cách cho hành vi dự kiến.
Tạm dừng cho đến khi có thông báo mới.

Tôi muốn giới thiệu alias ll='ls -lh'. Bạn có thể chạy ls -lnếu bạn muốn kích thước theo byte thay vì B / kiB / MiB / GiB thân thiện với con người.
Peter Cordes

13

lllà một bí danh được xác định trong của bạn ~/.bashrc, miễn là bạn không thay đổi nó ls -alF:

$ grep ll= <~/.bashrc
alias ll='ls -alF'

Ba tùy chọn này là:

  • -a, --all - đừng bỏ qua các mục bắt đầu bằng.
  • -l - sử dụng định dạng danh sách dài
  • -F, - classify - nối thêm chỉ báo (một trong * / => @ |) vào các mục

Như

$ grep ls= <~/.bashrc
alias ls='ls --color=auto'

cho thấy, lschính nó lại là một bí danh cho ls --color=auto:

Với --color=auto, chỉ lsphát ra mã màu khi đầu ra tiêu chuẩn được kết nối với thiết bị đầu cuối. Biến LS_COLORSmôi trường có thể thay đổi cài đặt. Sử dụng dircolors lệnh để thiết lập nó.


Không nhất thiết phải .bashrc. Nếu bạn sử dụng một shell khác, nó sẽ được xác định trong tệp .rc cho shell đó -, cshrc, .tchshc, v.v.
jamesqf

@jamesqf Tôi nghĩ rằng ai đó sử dụng shell khác cũng biết bí danh nào được xác định trước trong đó - Tôi đã đặt câu hỏi về thiết lập Ubuntu mặc định, bashvỏ mặc định cho người dùng và bí danh llđược xác định trong /etc/skel/.bashrcđó được sao chép vào mỗi cái mới thư mục nhà của người dùng. Tất nhiên bạn có thể sử dụng bất kỳ tệp nào để lưu trữ bí danh của riêng bạn - tất cả những gì bạn cần là nguồn đó.
tráng miệng

2
Không cần thiết phải chuyển hướng tệp vào grep, nó sẽ lấy tên tệp làm đối số. Trong khi grepping các tệp khởi động sẽ giúp bạn tìm vị trí của bí danh (lưu ý) (lưu ý rằng nó có thể nằm trong một tệp /etc- biết rằng sẽ giúp bạn tiết kiệm được một số vết xước nếu bạn xóa nó khỏi tệp khởi động người dùng và nó vẫn tồn tại hoặc thậm chí thay đổi hành vi của nó), nếu bạn chỉ muốn nhanh chóng biết những gì định nghĩa là, các bí danh lệnh, như đã nêu trong các câu trả lời được chấp nhận, sẽ thực hiện công việc.
Tạm dừng cho đến khi có thông báo mới.

@DennisWilliamson Không cần thiết phải bashmở tệp, nhưng tốt hơn nhiều! Câu cuối cùng trong bài đăng câu hỏi Có cách nào để xác định vị trí llvà xem cú pháp của nó không? , đó là những gì câu trả lời của tôi trả lời.
tráng miệng

3

Bạn có thể tìm trong ~ / .bashrc (hoặc một số tệp có bí danh của bạn) hoặc bạn có thể viết một số lệnh này trong trình bao của mình:

command -v ll # "command" is a shell built-in that display information about       
              # the command. Use the built-in "help command" to see the 
              # options.
type -p ll # "type" is another built-in that display information about how the 
           # command would be interpreted
grep -r "alias ll=" ~ # and don't worry about de .file that contains your 
                      # alias. This command search recursively  under  each  
                      # folder of your home. So it's something rude.
find ~ -maxdepth 1 -type f | xargs grep "alias ll" # Just look in 
                      # the files (not folders) in your home folder

Nhưng tại sao sử dụng find mà không có -name ". *"? Vì bạn có thể đặt cái này trong .bashrc của bạn

source bash_hacks # where the file bash_hacks, in your home directory can 
                  # contain the alias ll='ls -la etc etc'.

Vì "ll" nó là bí danh, nên nó không có nghĩa chỉ có một nghĩa (ll = 'ls -alF --color'), bạn có thể đặt bí danh "ll" của mình như một cách khác . Tôi nghĩ đó là một quy ước (sản phẩm sử dụng phổ biến).

Nhưng "ll" có thể là một chương trình được lưu trữ trong bất kỳ thư mục nào trong PATH của bạn. Ví dụ: nếu bạn có một thư mục có tên "bin" trong nhà, hãy tạo một tập lệnh "ll" có chứa một cái gì đó như

#!/bin/bash
ls -lhar

Nhưng, điều gì sẽ xảy ra nếu PATH của bạn đã bị thay đổi để thêm một thư mục khác chứa lệnh "ll" mới? Để biết thêm thông tin thú vị, bạn có thể tham khảo liên kết sau đây cho một câu hỏi liên quan.


0

Không cần phân tích cú pháp ~ / .bashrc hoặc bất kỳ tập lệnh nào khác. Bạn có thể kiểm tra giá trị hiện tại của tất cả các aliaslệnh gõ bí danh trong thiết bị đầu cuối. Nó sẽ mang tất cả các bí danh được xác định với định nghĩa của chúng lên màn hình của bạn.


Xin chào và chào mừng bạn đến hỏi Ubuntu. Làm thế nào là câu trả lời này thêm một cái gì đó để chấp nhận?
Bruni

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.