Các lệnh tiêu chuẩn có sẵn trong mọi bản phân phối dựa trên Linux là gì?


39

Tôi muốn biết các lệnh tiêu chuẩn có sẵn trong mọi hệ thống Linux.

Ví dụ: nếu bạn nhận được một debian / ubfox / redhat / suse / arch / slackware, v.v., bạn sẽ luôn tìm thấy các lệnh như:

cd, mkdir, ls, echo, grep, sed, awk, ping, v.v.

Tôi biết rằng một số lệnh được đề cập là shell-dựng nhưng những lệnh khác thì không nhưng chúng vẫn luôn ở đó (dựa trên kiến ​​thức và kinh nghiệm của tôi cho đến nay).

Mặt khác, các lệnh như gawk, parted, traceroute và các lệnh khá nổi tiếng khác không được cài đặt theo mặc định trong các bản phân phối Linux khác nhau.

Tôi đã thực hiện các tìm kiếm trên web khác nhau nhưng tôi không tìm thấy câu trả lời thẳng cho vấn đề này.

Mục đích là tôi muốn tạo một tập lệnh shell và nó sẽ thực hiện một số kiểm tra độ tỉnh táo nếu các lệnh được sử dụng trong tập lệnh có sẵn trong hệ thống. Nếu không, nó sẽ nhắc người dùng cài đặt các nhị phân cần thiết.


5
Chỉ là một gợi ý: " nó sẽ thực hiện một số kiểm tra độ tỉnh táo nếu các lệnh được sử dụng trong tập lệnh có sẵn trong hệ thống " nghe rất giống Autoconf .
sr_

Chắc chắn là một trường hợp cho cấu hình tự động ... hoặc có lẽ là anh em họ khoa học hơn của nó, lý thuyết hứa .
tự đại diện

@Wildcard, tôi tin rằng bất kỳ hệ thống quản lý cấu hình nào cũng sẽ là quá mức cho trường hợp đó, trừ khi bạn muốn kiểm tra vệ sinh liên tục và tự phục hồi hệ thống ngay cả sau khi cài đặt ban đầu.
Vangelis Tasoulas

@VangelisTasoulas, tôi không nghĩ vậy. Trong một thiết lập người dùng đơn lẻ như máy tính gia đình, tại sao bạn cần phải viết kịch bản? Quản lý cấu hình sẽ quá mức cần thiết nhưng cũng sẽ kiểm tra theo kịch bản so với thủ công. Trong một kịch bản mà bạn có nhiều hộp mà bạn muốn đảm bảo tính nhất quán, kịch bản sẽ không bị quá tải nhưng cũng không thể quản lý cấu hình. Hay bạn là một nhà phát triển phần mềm chỉ muốn chạy kiểm tra độ trong khi cài đặt gói cho sản phẩm của bạn? Nó phụ thuộc vào kịch bản của bạn, vâng, nhưng nếu bạn muốn quản lý cấu hình của mình, một công cụ quản lý cấu hình không quá mức cần thiết. ;)
Thẻ đại diện

1
@Wildcard, Khi tôi viết câu hỏi này, tôi đã suy nghĩ về câu hỏi sau: Chỉ muốn chạy kiểm tra độ tỉnh táo trong khi cài đặt trong một máy duy nhất, để đảm bảo rằng phần mềm sẽ chạy đúng. Tất nhiên, nếu bạn muốn quản lý nhiều máy chủ và xử lý các triển khai phân tán, v.v., thì tôi đồng ý rằng quản lý cấu hình là cách để đi về lâu dài.
Vangelis Tasoulas

Câu trả lời:


41

Thật không may, không có gì đảm bảo bất cứ điều gì có sẵn.

Tuy nhiên, hầu hết các hệ thống sẽ có lõi GNU . Điều đó một mình cung cấp khoảng 105 lệnh. Bạn có thể có thể dựa vào những thứ đó trừ khi đó là một hệ thống nhúng, có thể sử dụng BusyBox thay thế.

Bạn cũng có thể dựa vào bash , cron , GNU findutils , GNU grep , gzip , iproute2 , iputils , man-db , module-init-tools , net-tools , passwd ( passwd hoặc Shadow ), Procps , tar , và produc- linux .

Lưu ý rằng một số chương trình có thể có một số khác biệt giữa các bản phân phối. Ví dụ /usr/bin/awkcó thể là gawk hoặc mawk . /bin/shcó thể là dấu gạch ngang hoặc bash trong chế độ POSIX . Trên một số hệ thống cũ hơn, /usr/bin/hostkhông có cú pháp giống như phiên bản BIND , vì vậy có thể tốt hơn khi sử dụng dig .

Nếu bạn đang tìm kiếm một số tiêu chuẩn, Cơ sở Tiêu chuẩn Linux xác định một số chương trình thường thấy , nhưng không phải tất cả các bản phân phối đều tuân thủ tiêu chuẩn và một số chỉ làm như vậy nếu bạn cài đặt gói tương thích LSB tùy chọn. Lấy ví dụ về điều này, một số hệ thống tôi đã thấy không đi kèm với lsb_releasecài đặt mặc định.

Cũng như điều này, danh sách các lệnh được chuẩn hóa bởi POSIX có thể hữu ích.

Một cách tiếp cận khác cho vấn đề của bạn là đóng gói tập lệnh của bạn bằng cách sử dụng các công cụ đóng gói của mỗi bản phân phối (ví dụ RPM cho Red Hat, DEB cho Debian, v.v.) và khai báo sự phụ thuộc vào bất kỳ chương trình hoặc gói nào khác bạn cần. Đó là một chút công việc, nhưng điều đó có nghĩa là người dùng sẽ thấy một thông báo lỗi thân thiện hơn, nói với họ không chỉ là những gì còn thiếu, mà là những gói họ cần cài đặt.

Thêm thông tin:


Các gói-and--phụ thuộc add -idea là rất tốt, nhịp đập lặn vào Autoconf tay xuống:)
sr_

2
Câu trả lời tuyệt vời, tôi đồng ý với tất cả mọi thứ. Tôi sẽ thêm một bước thận trọng: hãy tính đến các tùy chọn cụ thể bổ sung của phiên bản cụ thể của lệnh bạn đang sử dụng ... chúng có thể không hoạt động trên tất cả các phiên bản (điều này đã xảy ra trong một dự án tôi đã làm việc).
JoséNunoFerreira

Tôi không cho rằng có một tệp văn bản gốc với một danh sách các lệnh này ở bất cứ đâu? pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html có thể tương đối dễ dàng được chuyển đổi sang đó nhưng vẫn còn thiếu một bunch of stuff.
Dylan Nicholson

7

Trên các hệ thống Linux không được nhúng, bạn thường có thể tin tưởng vào hầu hết các tiện ích GNU:

cộng với bộ linux-linux và bộ Procps . Lưu ý rằng /bin/shkhông phải lúc nào cũng bash, nó có thể là một vỏ với ít tính năng hơn, chẳng hạn như một trong nhiều nhánh tro .

Các Linux Standard Base định nghĩa một tập hợp các tiện ích thông thường với các tính năng được mong đợi trên tất cả các hệ thống phù hợp. Bạn cũng có thể mong đợi hầu hết các tiện ích được chỉ định bởi POSIX . Một ngoại lệ đáng chú ý là pax, đây không phải là một phần của cài đặt mặc định của nhiều bản phân phối.

Nếu bạn muốn giữ mọi thứ đơn giản, hãy yêu cầu cài đặt một lsb_releasegói. Nhiều bản phân phối có một gói như vậy kéo theo tất cả các phụ thuộc theo yêu cầu của LSB.

Trên một hệ thống nhúng, tất cả các cược đã tắt. Các hệ thống Linux nhúng thường chạy BusyBox , nhưng rất nhiều tiện ích và tính năng là tùy chọn, vì vậy bạn có thể chắc chắn nhận được rất ít.


6

Có một tập hợp các lệnh nhất nếu không phải tất cả các bản phân phối Linux và đối với vấn đề đó, các bản phân phối Unix cũng sẽ cung cấp. Đây là các lệnh bắt buộc được chỉ định bởi tiêu chuẩn POSIX .

Hầu hết các lệnh bạn trích dẫn ( cd, mkdir, ls, echo, grep, sed, awk, vv) là của nó. Ngoại lệ pingnhư WhiteWinterWolf nhận xét đúng.


1
Trên thực tế pingkhông phải là một phần của POSIX ...
WhiteWinterWolf

Các trang web của POSIX tiểu bang mà họ tập trung vào việc đảm bảo "ứng dụng di động ở cấp mã nguồn" , tức là. theo hiểu biết của tôi, họ quan tâm đến API hệ thống, hành vi và các lệnh hệ thống (bao gồm cả vỏ) có thể được sử dụng để định cấu hình, biên dịch và cài đặt một ứng dụng và xử lý mã nguồn của nó.
WhiteWinterWolf

Họ không quan tâm đến tiện ích mạng ( "Hệ thống cấu hình và tính sẵn sàng tài nguyên" là explicitely out-of-phạm vi), lệnh nên quá phổ biến như ping, ifconfig, telnet, vv không phải là một phần của tiêu chuẩn này (hay bất kỳ ai khác AFAIK, họ chỉ nhằm mục đích tương thích với "triển khai lịch sử" trên cơ sở nỗ lực cao nhất).
WhiteWinterWolf
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.