คำสั่งมาตรฐานใดที่มีอยู่ในการแจกจ่ายบน Linux ทุกครั้ง


39

ฉันต้องการที่จะรู้ว่าคำสั่งมาตรฐานที่มีอยู่ในทุกระบบ Linux

ตัวอย่างเช่นถ้าคุณได้รับ debian / ubuntu / redhat / suse / arch / slackware เป็นต้นคุณจะพบคำสั่งที่นั่นเสมอ:

cd, mkdir, ls, echo, grep, sed, awk, ping เป็นต้น

ฉันรู้ว่าคำสั่งที่กล่าวถึงบางคำเป็น shell-builtin แต่คำสั่งอื่น ๆ ไม่ได้ แต่พวกเขายังคงอยู่ที่นั่นเสมอ (ตามความรู้และประสบการณ์ของฉัน)

ในทางกลับกันคำสั่งเช่น gawk, แยก, traceroute และคำสั่งที่โด่งดังอื่น ๆ จะไม่ถูกติดตั้งโดยค่าเริ่มต้นในการแจกแจงลินุกซ์ที่แตกต่างกัน

ฉันค้นหาเว็บต่าง ๆ แต่ฉันไม่พบคำตอบตรงๆ

จุดประสงค์คือฉันต้องการสร้างเชลล์สคริปต์และควรทำการตรวจสอบสติบางอย่างหากคำสั่งที่ใช้ในสคริปต์นั้นมีอยู่ในระบบ หากไม่เป็นเช่นนั้นควรแจ้งให้ผู้ใช้ติดตั้งไบนารีที่จำเป็น


5
เพียงคำใบ้: " มันควรจะทำการตรวจสอบสติบางอย่างถ้าคำสั่งที่ใช้ในสคริปต์ที่มีอยู่ในระบบ " เสียงมากเช่นAutoconf
sr_

แน่นอนกรณีสำหรับรถยนต์-config ... หรือบางทีอาจจะเป็นญาติทางวิทยาศาสตร์มากขึ้นของทฤษฎีสัญญา
Wildcard

@ Wildcard ฉันเชื่อว่าระบบการจัดการการกำหนดค่าใด ๆ จะ overkill สำหรับกรณีดังกล่าวเว้นแต่ว่าคุณต้องการตรวจสอบสติอย่างต่อเนื่องและการรักษาด้วยตนเองของระบบแม้หลังจากการติดตั้งครั้งแรก
Vangelis Tasoulas

@VangelisTasoulas ฉันไม่คิดอย่างนั้น ในการตั้งค่าผู้ใช้คนเดียวเช่นคอมพิวเตอร์ที่บ้านทำไมคุณต้องสคริปต์มัน การจัดการการกำหนดค่าจะมากเกินไป - แต่จะตรวจสอบกับสคริปต์ด้วยตนเอง ในสถานการณ์ที่คุณมีหลายกล่องตามที่คุณต้องการให้แน่ใจว่ามีความสอดคล้องกันการเขียนสคริปต์จะไม่ overkill - แต่จะไม่มีการจัดการการกำหนดค่า หรือคุณเป็นผู้พัฒนาซอฟต์แวร์เพียงต้องการเรียกใช้การตรวจสอบสติในระหว่างการติดตั้งแพ็กเกจสำหรับผลิตภัณฑ์ของคุณ? มันขึ้นอยู่กับสถานการณ์ของคุณใช่ แต่ถ้าคุณต้องการจัดการการกำหนดค่าของคุณเครื่องมือการจัดการการกำหนดค่าจะไม่ overkill ;)
Wildcard

1
@ Wildcard เมื่อฉันเขียนคำถามนี้ฉันคิดถึงสิ่งหลัง: เพียงแค่ต้องการเรียกใช้การตรวจสอบสติในระหว่างการติดตั้งในเครื่องเดียวเพื่อให้แน่ใจว่าซอฟต์แวร์จะทำงานอย่างถูกต้อง แน่นอนถ้าคุณต้องการจัดการเซิร์ฟเวอร์หลายเครื่องและจัดการการปรับใช้แบบกระจาย ฯลฯ ฉันยอมรับว่าการจัดการการกำหนดค่าเป็นวิธีที่จะดำเนินการในระยะยาว
Vangelis Tasoulas

คำตอบ:


41

น่าเสียดายที่ไม่มีการรับประกันว่าสิ่งใดจะพร้อมใช้งาน

แต่ระบบส่วนใหญ่จะมีcoreutils GNU เพียงอย่างเดียวนั้นให้คำสั่งประมาณ 105 คำ คุณสามารถพึ่งพาสิ่งเหล่านั้นได้เว้นแต่จะเป็นระบบฝังตัวซึ่งอาจใช้BusyBoxแทน

คุณสามารถพึ่งพาbash , cron , GNU findutils , GNU grep , gzip , iproute2 , iputils , man-db , module-init-tools , เครื่องมือnet , passwd ( passwdหรือเงา ), procps , tarและutil- ลินุกซ์

โปรดทราบว่าบางโปรแกรมอาจมีความแตกต่างระหว่างการแจกแจง ยกตัวอย่างเช่น/usr/bin/awkอาจจะเพ่งพิศหรือmawk /bin/shอาจจะรีบหรือทุบตีในโหมด POSIX บนระบบเก่าบางอย่าง/usr/bin/hostไม่ได้มีรูปแบบเช่นเดียวกับรุ่นห่วงดังนั้นมันอาจจะดีกว่าที่จะใช้ขุด

หากคุณกำลังมองหามาตรฐานบางอย่างฐานมาตรฐาน Linux จะกำหนดบางโปรแกรมที่พบได้ทั่วไปแต่ไม่ใช่ทุกรุ่นที่มีการอ้างสิทธิ์ว่าสอดคล้องกับมาตรฐาน เป็นตัวอย่างของสิ่งนี้ระบบบางอย่างที่ฉันเห็นไม่ได้มาพร้อมกับlsb_releaseการติดตั้งเริ่มต้น

เช่นนี้รายการคำสั่งที่เป็นมาตรฐานโดย POSIXอาจมีประโยชน์

อีกวิธีในการแก้ไขปัญหาของคุณคือการจัดทำสคริปต์ของคุณโดยใช้เครื่องมือบรรจุภัณฑ์ของแต่ละการแจกจ่าย (เช่น RPM สำหรับ Red Hat, DEB สำหรับ Debian ฯลฯ ) และประกาศการพึ่งพาโปรแกรมหรือแพ็คเกจอื่น ๆ ที่คุณต้องการ มันใช้งานได้นิดหน่อย แต่มันหมายถึงผู้ใช้จะเห็นข้อความแสดงข้อผิดพลาดที่เป็นมิตรบอกพวกเขาไม่เพียง แต่มีอะไรที่ขาดหายไป แต่สิ่งที่พวกเขาต้องติดตั้งแพคเกจ

ข้อมูลเพิ่มเติม:


แพคเกจและ Add-อ้างอิง -idea เป็นที่ดีเต้นดำน้ำในมือ Autoconf ลง:)
sr_

2
คำตอบที่ดีฉันเห็นด้วยกับทุกสิ่ง ฉันจะเพิ่มขั้นตอนการระมัดระวังเป็นพิเศษ: คำนึงถึงตัวเลือกพิเศษที่เฉพาะเจาะจงของคำสั่งรุ่นที่คุณใช้ ... พวกเขาอาจใช้งานไม่ได้กับทุกเวอร์ชัน (สิ่งนี้เกิดขึ้นในโครงการที่ฉันทำงานด้วย)
JoséNunoFerreira

ฉันไม่คิดว่าจะมีไฟล์ธรรมดาที่มีรายการคำสั่งเหล่านี้ทุกที่หรือไม่? pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlสามารถทำการแปลงให้เป็นแบบนั้นได้ง่าย แต่ก็ยังขาดสิ่งต่าง ๆ
Dylan Nicholson

7

บนระบบที่ไม่ได้ฝังตัวลินุกซ์โดยทั่วไปคุณสามารถนับยูทิลิตี้ GNU ส่วนใหญ่ได้:

บวกutil ลินุกซ์สวีทและห้องสวีท procps โปรดทราบว่า/bin/shไม่เคยทุบตีก็สามารถเป็นเปลือกที่มีน้อยให้บริการดังกล่าวเป็นหนึ่งในหลายส้อมเถ้า

ลินุกซ์ฐานมาตรฐานกำหนดชุดของสาธารณูปโภคทั่วไปที่มีคุณสมบัติที่คาดว่าในระบบตามนโยบายทั้งหมด นอกจากนี้คุณยังสามารถคาดหวังมากที่สุดของสาธารณูปโภคที่ระบุโดย POSIX ข้อยกเว้นเด่นคือpaxซึ่งไม่ได้เป็นส่วนหนึ่งของการติดตั้งเริ่มต้นของการกระจายจำนวนมาก

หากคุณต้องการให้สิ่งต่าง ๆ เรียบง่ายร้องขอการติดตั้งlsb_releaseแพคเกจ ดิสทริบิวชันส่วนใหญ่มีแพ็คเกจที่ดึงการพึ่งพาทั้งหมดที่ LSB ต้องการ

ในระบบฝังตัวการเดิมพันทั้งหมดจะปิด ระบบลีนุกซ์แบบฝังมักใช้งานกับBusyBoxแต่ยูทิลิตี้และคุณสมบัติต่าง ๆ เป็นทางเลือกดังนั้นจึงมีน้อยมากที่คุณจะแน่ใจได้


6

มีชุดคำสั่งส่วนใหญ่หากไม่ใช่ทุกลีนุกซ์ลีนุกซ์, และสำหรับเรื่องนั้น, ดิสทริบิวชั่นของ Unix จะจัดเตรียมให้ด้วย. เหล่านี้เป็นคำสั่งบังคับระบุโดยมาตรฐาน POSIX

ที่สุดของคำสั่งที่คุณกล่าวถึง ( cd, mkdir, ls, echo, grep, sed, awk, ฯลฯ ) เป็นของมัน ข้อยกเว้นการpingเป็น WhiteWinterWolf แสดงความคิดเห็นอย่างถูกต้อง


1
ที่จริงแล้วpingไม่ได้เป็นส่วนหนึ่งของ POSIX ...
WhiteWinterWolf

หน้าแรกของ POSIXระบุว่าพวกเขามุ่งเน้นการสร้างความมั่นใจ"พกพาแอพลิเคชันในระดับซอร์สโค้ด"คือ ตามความเข้าใจของฉันพวกเขาสนใจระบบ API พฤติกรรมของระบบ (รวมถึงเชลล์) และคำสั่งที่อาจใช้ในการกำหนดค่าคอมไพล์และติดตั้งแอปพลิเคชันและจัดการซอร์สโค้ดของมัน
WhiteWinterWolf

พวกเขาไม่สนใจที่เกี่ยวกับสาธารณูปโภคเครือข่าย ( "ระบบการตั้งค่าและทรัพยากร"มี explicitely ออกจากขอบเขต) คำสั่งเพื่อให้แพร่หลายเช่นping, ifconfig, telnetฯลฯ ไม่เป็นส่วนหนึ่งของมาตรฐานนี้ (หรืออื่น ๆ หนึ่ง AFAIK พวกเขาเพียงแค่ มุ่งความเข้ากันได้กับ"การใช้งานทางประวัติศาสตร์"บนพื้นฐานของความพยายามอย่างดีที่สุด)
WhiteWinterWolf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.