tại sao 'echo --help' không cung cấp cho tôi trang trợ giúp về tiếng vang?


20

Tôi đã thử 'man echo' trong Bash và nó nói với tôi rằng 'echo --help' sẽ hiển thị trợ giúp sau đó thoát, và tương tự, 'echo --version' sẽ xuất ra phiên bản và thoát. Nhưng tại sao nó không hoạt động? 'echo --help' chỉ đơn giản là in '- trợ giúp' theo nghĩa đen.


2
Lưu ý rằng việc tạo một thông báo trợ giúp echo --helplà một lỗi . Hãy tưởng tượng điều gì xảy ra nếu bạn làm: printf "The option you entered is: " ; echo "$opt"và biến shell optxảy ra để chứa văn bản --help. Theo tiêu chuẩn POSIX, echokhông được phép hành xử theo cách này, nhưng tiếng vang GNU không tuân thủ một cách đáng ghét.
R ..

1
@R .. Vậy echo -eecho -ncũng là một lỗi, theo logic của bạn?
Tyilo

@Tyilo: Xem thông số kỹ thuật trong POSIX hoặc phạm vi bảo hiểm của tôi về vấn đề này tại đây: etalabs.net/sh_tricks.html
R ..

@R .. Hãy tưởng tượng điều gì xảy ra nếu bạn làm: printf "Tùy chọn bạn đã nhập là:"; echo "$ opt" và biến opt shell xảy ra có chứa văn bản -e hoặc -n.
Tyilo

@Tyilo: Thay vì giải thích lại tôi thích một trang nơi tôi đã giải thích câu trả lời cho câu hỏi đó.
R ..

Câu trả lời:


26

man echoliên quan đến echochương trình . GNU echo hỗ trợ một --helptùy chọn, cũng như một số khác. Khi bạn chạy echotrong Bash, thay vào đó, bạn nhận được nội dung của nóecho .

Để truy cập echochương trình, thay vì dựng sẵn, bạn có thể đưa ra đường dẫn đến chương trình:

/bin/echo --help

hoặc sử dụng enablelệnh của Bash để tắt phiên bản tích hợp:

$ enable -n echo
$ echo --help

Bash có các phiên bản dựng sẵn của rất nhiều lệnh cơ bản, bởi vì nó nhanh hơn một chút để làm điều đó, nhưng bạn luôn có thể bỏ qua chúng như thế này khi bạn cần.


Phục vụ tôi ngay để sử dụng zsh. enablekhông hoạt động, mặc dù.
Michael Homer

@MichaelHomer Vậy một số phiên bản tích hợp có thể khác với ... phiên bản gốc? Nếu có sự khác biệt, vậy tên của tất cả các lệnh ban đầu, bao gồm 'chương trình echo' như bạn đã đề cập là gì? Hoặc thuật ngữ nào chúng ta sử dụng để phân biệt chúng với các phiên bản tích hợp?
bán sách

1
@booksee: Có, chúng có thể khác nhau. GNU echonói riêng có rất nhiều phần mở rộng trên POSIX và Bash echochỉ có một số phần mở rộng . Thực sự không có một tên chung mà tôi có thể nghĩ ra cho các lệnh có thể bị che khuất bởi các nội trang. Không có quá nhiều mà bạn cần một: echo, test, [, và pwdlà những người bạn có khả năng gặp gỡ.
Michael Homer

@Gnouc: Có, commandrõ ràng không gọi nội dung luôn. Tôi không biết mình đang nghĩ gì, ngoài những thứ đó zshhoạt động theo cách khác.
Michael Homer

2
"sử dụng lệnh enable của Bash để vô hiệu hóa" yup, các bạn, là như thế
Braiam

10

Ngoài các câu trả lời khác, bạn có thể sử dụng

$ help echo

quá thấy một trợ giúp ngắn gọn cho echolệnh tích hợp.


8

Bạn đang sử dụng echolệnh bash tích hợp, không hiểu --helptùy chọn này. Sử dụng:

/bin/echo --help

Để xem trợ giúp tích hợp echo, sử dụng man bashvà tìm kiếm echo.


cái này hiệu quả với tôi
Hayden Thring
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.