คำถามติดแท็ก unix-philosophy

12
ปรัชญาของการล่าช้าในการเขียนข้อมูลลงดิสก์คืออะไร
ใน Linux การดำเนินการคำสั่งที่เสร็จสิ้นแล้วเช่นcpหรือddไม่ได้หมายความว่าข้อมูลถูกเขียนไปยังอุปกรณ์ หนึ่งมีการยกตัวอย่างเช่นการโทรsyncหรือเรียกว่า "Safely Remove" หรือ "Eject" ฟังก์ชั่นบนไดรฟ์ ปรัชญาของวิธีการดังกล่าวคืออะไร? เหตุใดข้อมูลจึงไม่ถูกเขียนพร้อมกัน ไม่มีอันตรายที่การเขียนจะล้มเหลวเนื่องจากข้อผิดพลาด I / O หรือไม่?

3
ทำไม Unix ถึงสนับสนุนตัวเอง?
ฉันอ่านเอกสารของ Ritchie และ Thompson เกี่ยวกับระบบไฟล์ Unix พวกเขาเขียนว่า 'มันคุ้มค่าที่จะสังเกตว่าระบบนี้มีการช่วยเหลือตัวเองทั้งหมด' ระบบก่อนที่ Unix จะไม่สนับสนุนตัวเองหรือไม่? ในรูปแบบใด?

2
คำอธิบายของคนธรรมดาสำหรับ“ ทุกอย่างเป็นไฟล์” - อะไรคือสิ่งที่แตกต่างจาก Windows
ฉันรู้ว่า "ทุกอย่างเป็นไฟล์" หมายความว่าแม้กระทั่งอุปกรณ์ที่มีชื่อไฟล์และพา ธ ในระบบ Unix และ Unix-like และสิ่งนี้ทำให้เครื่องมือทั่วไปสามารถใช้กับทรัพยากรที่หลากหลายโดยไม่คำนึงถึงลักษณะของพวกเขา แต่ฉันไม่สามารถเปรียบเทียบได้กับ Windows ซึ่งเป็นระบบปฏิบัติการอื่นที่ฉันทำงานด้วย ฉันได้อ่านบทความบางอย่างเกี่ยวกับแนวคิด แต่ฉันคิดว่าพวกเขาค่อนข้างลำบากที่จะเข้าใจผู้ที่ไม่ใช่นักพัฒนา คำอธิบายของคนธรรมดาคือสิ่งที่ผู้คนต้องการ! ตัวอย่างเช่นเมื่อฉันต้องการคัดลอกไฟล์ไปยังการ์ด CF ที่ติดกับเครื่องอ่านการ์ดฉันจะใช้สิ่งที่ชอบ zcat name_of_file > /dev/sdb ใน Windows ฉันคิดว่าเครื่องอ่านการ์ดจะปรากฏเป็นไดรเวอร์และเราจะทำสิ่งที่คล้ายกันฉันคิดว่า ดังนั้นปรัชญา "ทุกอย่างเป็นไฟล์" สร้างความแตกต่างได้อย่างไรที่นี่

2
ทำไมการจัดเรียง -o จึงมีประโยชน์
ปรัชญา UNIX พูดว่า: ทำสิ่งหนึ่งและทำได้ดี สร้างโปรแกรมที่จัดการข้อความเนื่องจากเป็นอินเตอร์เฟซสากล sortคำสั่งอย่างน้อยการจัดเรียงของ GNU มีตัวเลือกในการส่งออกไปยังไฟล์แทน-o stdoutทำไมจึงพูดsort foobar -o whateverประโยชน์เมื่อฉันสามารถทำได้เพียงแค่sort foobar > whatever?

1
เหตุใดจึงต้องใช้เปลือก ** เข้าสู่ระบบ ** เหนือเปลือกหอย ** ที่ไม่ได้ลงชื่อเข้าใช้ **
ฉันมีความเข้าใจพื้นฐานของdotfilesในระบบ * nix แต่ฉันยังคงสับสนเกี่ยวกับความแตกต่างระหว่างล็อกอินเชลล์และเชลล์ที่ไม่ใช่ล็อกอินนี้ กลุ่มคำตอบที่แตกต่างกัน (รวมถึงคำซ้ำซ้อน) ได้ระบุหัวข้อย่อยต่อไปนี้แล้ว: วิธีการเรียกเข้าสู่ระบบหรือไม่ใช่การเข้าสู่ระบบเปลือก วิธีการตรวจสอบเข้าสู่ระบบหรือไม่ใช่การเข้าสู่ระบบเปลือก ไฟล์เริ่มต้นใดบ้างที่จะถูกใช้โดยล็อกอินหรือเชลล์ที่ไม่ใช่ล็อกอิน อ้างถึงเอกสาร (เช่นman bash) สำหรับรายละเอียดเพิ่มเติม สิ่งที่คำตอบไม่ได้บอก (และบางสิ่งที่ฉันยังสับสนอยู่) คือ: อะไรคือสิ่งที่ใช้กรณีของการเข้าสู่ระบบหรือไม่ใช่การเข้าสู่ระบบเปลือก? (เช่นผมกำหนดค่าเฉพาะzshrcสำหรับzshและที่มากพอสำหรับความต้องการส่วนบุคคลมากที่สุด dev, ฉันรู้ว่ามันไม่ง่ายเหมือนสิ่งที่vimrcไปvim) อะไรคือเหตุผลที่จะใช้เข้าสู่ระบบในช่วงที่ไม่ได้เข้าสู่ระบบเปลือก (นอกเหนือจากการบริโภคแฟ้มเริ่มต้นที่แตกต่างกันและวงจรชีวิต)?

4
ซ็อกเก็ต Unix Internet เป็นไฟล์หรือไม่?
ฉันเข้าใจว่า "ทุกอย่างเป็นไฟล์" เป็นหนึ่งในแนวคิดหลักของ Unix แต่ซ็อกเก็ตใช้ API ที่แตกต่างกันซึ่งให้บริการโดยเคอร์เนล (เช่นซ็อกเก็ต, sendto, recv และอื่น ๆ ) ไม่เหมือนอินเทอร์เฟซระบบไฟล์ทั่วไป "ทุกอย่างเป็นไฟล์" นำไปใช้ที่นี่ได้อย่างไร

2
อะไรทำให้ระบบปฏิบัติการ“ Unix-Like”
ฉันมักเจอคำว่า "เหมือนยูนิกซ์" ในเว็บไซต์หลายแห่ง ไม่มีมาตรฐาน มันเป็นเพียงในลักษณะที่มันทำงาน แต่ถ้าฉันต้องพัฒนาเคอร์เนลตั้งแต่เริ่มต้นอะไรจะทำให้มันพิจารณาว่า "เหมือนยูนิกซ์"? โดยพื้นฐานแล้วอะไรคือสิ่งที่ทำให้โค้ดที่เขียนเหมือน Unix?

4
ถูกต้องหรือไม่ที่จะใช้อักขระพิเศษบางตัวเมื่อตั้งชื่อไฟล์ใน Linux?
มันถูกต้องที่จะใช้ตัวอักษรพิเศษบางอย่างเช่น+, &, ', .(dot) และ,(จุลภาค) โดยทั่วไปในชื่อไฟล์ ฉันเข้าใจว่าคุณสามารถใช้-และ_ไม่มีปัญหา แต่การทำวิจัยบางอย่างฉันไม่สามารถหาสิ่งที่แน่นอนเกี่ยวกับสัญลักษณ์อื่น ๆ ; บางคนบอกว่าคุณทำได้บางคนบอกว่าคุณทำไม่ได้และบางคนบอกว่ามันเป็น "ไม่สนับสนุน" ให้ใช้มัน

2
ฉันควรส่งชื่อโปรแกรมเมื่อคำเตือนหรือข้อผิดพลาดเกิดขึ้นหรือไม่
หากฉันเขียนสคริปต์หรือโปรแกรมฉันควรส่งออกไปยังชื่อ stderr พร้อมกับคำเตือนหรือข้อความแสดงข้อผิดพลาดหรือไม่? ตัวอย่างเช่น: ./script.sh: Warning! Variable "var" lowered down to 10. หรือ: ./prog.py: Error! No such file: "file.cfg". ฉันเข้าใจว่าโดยทั่วไปแล้วมันเป็นเพียงเรื่องของรสนิยม (โดยเฉพาะถ้าคุณเขียนของคุณเองเพื่อตัวเอง) แต่ฉันสงสัยว่ามีอะไรที่ธรรมดาบ้างไหม? ฉันเชื่อว่ายูทิลิตี UNIX / Linux ส่วนใหญ่เขียนชื่อของตัวเองเมื่อมีบางสิ่งเกิดขึ้นดังนั้นจึงเป็นเรื่องที่ดี แต่มีแนวทางหรือกฎที่ไม่ได้พูดวิธีการทำเช่นนั้นและไม่ทำอย่างไร ตัวอย่างเช่นไม่แนะนำให้ติดตั้งไบนารีภายใต้/usr/bin/แทน/usr/local/bin/หรืออย่างอื่น มีกฎที่คล้ายกันเกี่ยวกับการส่งออกไปยัง stderr? ฉันควรเขียนชื่อตามด้วยโคลอนหรือไม่? หรือเพียงแค่ "เตือน!" และ "ผิดพลาด!" คำ? ฉันไม่พบอะไรเลย แต่อาจมีบางคนบอกให้ฉันรู้ได้ คำถามนี้เป็นคำถามเล็กน้อยเกี่ยวกับวิธีปฏิบัติในการเขียนโปรแกรม แต่ฉันคิดว่ามันเหมาะสมกว่าที่นี่มากกว่าในstackoverflowเนื่องจากเป็นเรื่องเกี่ยวกับประเพณี UNIX / Linux และไม่ใช่โปรแกรมทั่วไป

2
ทำไมผู้ดูแลระบบหลัก UID 501
ผมเข้าใจ * ผู้ใช้ผู้ดูแลระบบหลักจะได้รับรหัสผู้ใช้501และผู้ใช้ที่ตามมาจะได้รับหมายเลขที่เพิ่มขึ้น ( 502, 503, ... ) แต่ทำไม501? มีอะไรพิเศษเกี่ยวกับ50xเหตุผลทางประวัติศาสตร์ / ทางเทคนิคสำหรับตัวเลือกนี้คืออะไร * .Trashes/501ผมเริ่มมองนี้เมื่อฉันได้อยากรู้ว่าทำไมฮาร์ดไดรฟ์ภายนอกของฉันมีไฟล์ที่อยู่ในถังขยะทั้งหมดภายใน การค้นหาของฉันทำให้ฉันสรุป501ได้ว่า ID ผู้ใช้สำหรับผู้ดูแลระบบหลักในระบบ * nix (ฉันอยู่บน macOS) แต่ไม่ใช่เพราะอะไร

1
การเขียนโปรแกรม Unix หมายถึงอะไรกันแน่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันคิดว่าฉันเข้าใจความหมายของคำว่าการเขียนโปรแกรม Unixแต่ตอนนี้หลังจากอ่านเกี่ยวกับมันในบริบทการเขียนโปรแกรมเคอร์เนล / C ฉันรู้สึกว่าฉันต้องชี้แจงความหมายของคำนี้ ไม่ชัดเจนสำหรับฉันถ้ามันหมายถึง: การเขียนโปรแกรมเชลล์ เครื่องมือการเขียนโปรแกรม Unix วิธี / รูปแบบเฉพาะของการเขียนโปรแกรมเครื่องมือบรรทัดคำสั่ง Unix (เช่นการเห็นด้วยกับวิธีการของ "Unix shell programming") หรือ อื่น ๆ อีก.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.