คำถามติดแท็ก posix

POSIX เป็นตัวย่อสำหรับ Portable Operating System Interface ซึ่งเป็นตระกูลมาตรฐานที่ IEEE กำหนดไว้สำหรับการรักษาความเข้ากันได้ระหว่างระบบปฏิบัติการ

2
ฉันจะทดสอบเพื่อดูว่ามีแอปพลิเคชันอยู่ใน $ PATH ได้อย่างไร
ฉันพยายามที่จะเขียนshสคริปต์เริ่มต้น / env ทั้งหมดของฉันเพื่อทำงานกับDRYให้มากที่สุดเท่าที่จะเป็นไปได้: "ใช้ได้กับทุก ๆ * * * * * * * * * * * * * * * * * * * * * * * นี่หมายถึงการทำให้แน่ใจว่าถ้าฉันพยายามเรียกใช้รหัสที่ไม่มีอยู่นั้นรหัสนั้นจะล้มเหลวอย่างงดงาม ด้วยเหตุนี้ฉันต้องสามารถทดสอบว่ามีโปรแกรมอยู่หรือไม่ ฉันรู้วิธีทดสอบว่ามีไฟล์อยู่หรือไม่ แต่ฉันไม่แน่ใจว่าจะทดสอบอย่างไรเพื่อดูว่าแอปพลิเคชันสามารถทำงานได้ภายในพา ธ หรือไม่ ฉันควรใช้ $ PATH เนื่องจากบางส่วนของสิ่งเหล่านี้จำเป็นต้องใช้กับ arch, ubuntu และ centos บางระบบอาจถูกติดตั้งในบ้านของฉันในระบบที่ฉันไม่มีรูทและบางระบบอาจไม่ได้ติดตั้งและอื่น ๆ ที่ติดตั้งในพา ธ ของระบบ

1
ตัวอักษรในคำสั่ง "fc" หมายถึงอะไร
ฉันเพิ่งเจอfcคำสั่งที่ให้คุณแก้ไขคำสั่งก่อนหน้าและออกในภายหลัง มันมีFCEDITตัวแปรสภาพแวดล้อมของตัวเองสำหรับการตั้งค่าการแก้ไขและหน้าคนในคู่มือโปรแกรมเมอร์ POSIX ( 1p) มันสร้างไฟล์ใน/tmpไดเรกทอรีและดำเนินการเนื้อหาหากไฟล์ถูกบันทึกไว้ ( :wqในvim) นอกจากนั้นยังสามารถกำหนดหมายเลขและรายการfc -lคำสั่งที่เรียกใช้ก่อนหน้านี้ให้เลือก ดังนั้นจึงเป็นคำสั่งที่ดีและมีประโยชน์ที่จะรู้ คำถามคือชื่อของมันหมายถึงอะไรจริงๆ; วิธีการเชื่อมโยงคำสั่งกับฟังก์ชั่นในใจ? "ชั้นหนึ่ง"? หรืออาจเป็นเพียงแค่ "ฟังก์ชั่น" (สิ่งที่อยู่ในใจของฉันหลังจากเขียนประโยคก่อนหน้า)? คู่มืออ้างถึงอย่างง่าย ๆ ว่า "ยูทิลิตี้ fc"
19 zsh  command  posix 

2
เหตุใด POSIX จึงต้องมีเชลล์ในตัวเพื่อให้มีการใช้งานภายนอก
จากคำถามนี้เกี่ยวกับว่าเป็น printf ในตัวสำหรับ Yashมาคำตอบนี้ว่าคำพูดมาตรฐาน POSIX คำตอบนั้นชี้ให้เห็นว่าลำดับการค้นหา POSIX คือการค้นหาการนำไปใช้ภายนอกของคำสั่งที่ต้องการและจากนั้นหากเชลล์นำมาใช้เป็นแบบบิวด์อินให้รันบิวด์อิน (สำหรับบิวด์อินที่ไม่ใช่บิวด์อินพิเศษ) เหตุใด POSIX จึงมีข้อกำหนดนี้เพื่อให้มีการใช้งานภายนอกอยู่ก่อนที่จะอนุญาตให้มีการใช้งานภายในได้ ดูเหมือน ... โดยพลการดังนั้นฉันอยากรู้

4
วิธีการที่สอดคล้องกับ checkbashisms เพื่อกำหนดเชลล์ปัจจุบัน
ในของ.profileฉันฉันใช้รหัสต่อไปนี้เพื่อให้แน่ใจว่านามแฝงที่เกี่ยวข้องกับ Bash และฟังก์ชั่นมีที่มาเฉพาะถ้าเปลือกเข้าสู่ระบบเป็น Bashจริง: # If the current (login) shell is Bash, then if [ "${BASH_VERSION:-}" ]; then # source ~/.bashrc if it exists. if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi ขณะนี้ฉันกำลังวางไฟล์เชลล์สคริปต์และฟังก์ชั่นการทำงานภายใต้การควบคุมเวอร์ชัน ฉันยังเพิ่งเริ่มต้นขั้นตอนการลบ Bashisms สบายจากสคริปต์เปลือกที่ไม่ได้รับประโยชน์จากคุณลักษณะทุบตีเฉพาะเช่นแทนที่ด้วยfunction funcname()funcname() สำหรับที่เก็บไฟล์เชลล์ของฉันฉันได้กำหนดค่าฮุคล่วงหน้าที่เรียกใช้checkbashismsยูทิลิตี้จากแพ็คเกจ devscriptsของ Debian ในแต่ละshไฟล์ในที่เก็บเพื่อให้แน่ใจว่าฉันไม่ได้แนะนำไวยากรณ์เฉพาะของ Bash โดยไม่ได้ตั้งใจ อย่างไรก็ตามสิ่งนี้ทำให้เกิดข้อผิดพลาดสำหรับ.profile: possible bashism in .profile …

4
ใช้ #! / bin / sh หรือ #! / bin / bash สำหรับ Ubuntu-OSX ที่ใช้งานร่วมกันได้และใช้งานง่าย & POSIX
ฉันรู้ว่าฉันสามารถใช้เป็นบรรทัดแรกของสคริปต์เพื่อเรียกใช้เชลล์ที่ต้องการ จะ#!/bin/shแนะนำถ้าเข้ากันได้กับทุกระบบยูนิกซ์เป็นข้อกำหนดที่แน่นอน? ในกรณีของฉันระบบปฏิบัติการเดียวที่ฉันสนใจคือ Ubuntu (Debian) และ OSX จากที่ฉันสามารถใช้#!/bin/bashและมั่นใจได้ว่ามันจะทำงานบนทั้งสองระบบ? นี่จะทำให้การใช้สคริปต์ที่ง่ายขึ้นและมีไวยากรณ์ที่ทันสมัยและชัดเจนยิ่งขึ้นสำหรับคำสั่งหรือไม่ การใช้#!/bin/shยังเกี่ยวข้องกับการใช้ POSIX หรือไม่
18 bash  shell  ubuntu  osx  posix 

2
คำอธิบายเกี่ยวกับ chown (1) ข้อมูลจำเพาะ POSIX
ข้อมูลจำเพาะ POSIX สำหรับchownยูทิลิตี้กล่าวถึงในส่วนของเหตุผลเกี่ยวกับchown user:groupไวยากรณ์ (เดิมchown user.group) (เน้นเหมือง): วิธี 4.3 BSD ในการระบุเจ้าของและกลุ่มถูกรวมไว้ในเล่มนี้ของ POSIX.1-2008 เพราะ: มีหลายกรณีที่ไม่สามารถบรรลุเงื่อนไขสิ้นสุดที่ต้องการได้โดยใช้ยูทิลิตี chgrp และ chown (ที่เปลี่ยนเฉพาะยูสเซอร์ ID) (หากเจ้าของปัจจุบันไม่ได้เป็นสมาชิกของกลุ่มที่ต้องการและเจ้าของที่ต้องการไม่ใช่สมาชิกของกลุ่มปัจจุบันฟังก์ชัน chown () อาจล้มเหลวเว้นแต่เจ้าของและกลุ่มจะเปลี่ยนไปในเวลาเดียวกัน) ฉันคิดว่าuser:groupไวยากรณ์เป็นสิ่งอำนวยความสะดวก ตอนนี้หมายถึงมีสิ่งที่คุณสามารถทำได้ด้วยchown user:groupสิ่งที่คุณไม่สามารถทำได้chgrp group; chown user ตอนนี้ข้อความนั้นไม่สมเหตุสมผลสำหรับฉัน ใน 4.3BSD เฉพาะ root เท่านั้นที่สามารถเปลี่ยนเจ้าของไฟล์ได้ไม่ว่าในกรณีใด ๆ ก็ไม่มีข้อ จำกัด ในสิ่งที่เขาสามารถทำได้ SysV และระบบอื่น ๆ ไม่กี่อนุญาตให้ (หรือใช้เพื่ออนุญาต) เจ้าของไฟล์ที่จะเปลี่ยนผู้ใช้และกลุ่มของไฟล์เป็นอะไร แต่แม้ในระบบเหล่านั้นข้อความข้างต้นไม่สมเหตุสมผลกับฉัน ตกลงถ้ามีคนทำchown someone-else the-fileไม่สามารถทำได้chgrp something-else …
18 posix  chown 

2
POSIX shell: `$ 'สูญเสียความหมายพิเศษหรือไม่ถ้ามันเป็นตัวอักษรตัวสุดท้ายในคำ?
ที่เถ้าถ่านประและทุบตีเมื่อฉันวิ่ง $ echo ab$ มันกลับมา ab$ พฤติกรรมนี้ถูกระบุโดย POSIX หรือเป็นเพียงการประชุมทั่วไปในเปลือกหอยที่สอดคล้องกับ POSIX หรือไม่ ฉันไม่พบสิ่งใดในหน้าภาษาคำสั่งเชลล์ POSIX ที่กล่าวถึงพฤติกรรมนี้
17 shell  posix 

3
ทำไมรูปแบบการทำงานของ `#!` ไม่ได้รับการระบุโดย POSIX
จากหน้าภาษาคำสั่งเชลล์ของข้อมูลจำเพาะ POSIX: หากบรรทัดแรกของไฟล์คำสั่งเชลล์เริ่มต้นด้วยอักขระ "#!" ผลลัพธ์จะไม่ถูกระบุ ทำไมพฤติกรรมของ#!ไม่ระบุโดย POSIX ฉันพบว่ามันทำให้งงงวยว่าบางสิ่งบางอย่างพกพาและใช้กันอย่างแพร่หลายจะมีพฤติกรรมที่ไม่ระบุ
17 shell  posix  shebang 

2
ถามรหัสผ่านในเชลล์ที่สอดคล้องกับ POSIX หรือไม่
เมื่อฉันต้องการขอรหัสผ่านในbashสคริปต์ฉันทำอย่างนั้น: read -s ... แต่เมื่อผมทำงานbashในโหมด POSIX กับshที่-sตัวเลือกที่ถูกปฏิเสธ: $ read -s sh: 1: read: Illegal option -s ฉันจะขออินพุตอย่างปลอดภัยด้วยคำสั่ง POSIX ได้อย่างไร

1
คำสั่งที่เกี่ยวข้องกับเลขคณิตคู่, Dash, POSIX เชลล์, sh, Increment
เมื่อก่อน / หลังการเพิ่มตัวแปรใน POSIX Shell ความแตกต่างระหว่างสองตัวอย่างนี้คืออะไร พวกเขาดูเหมือนว่าพวกเขาจะมีผลที่เหมือนกัน แต่พวกเขาจะใช้แตกต่างกันอย่างไร เมื่อไหร่ที่คุณจะชอบอีกอันหนึ่ง? X=$((X+1)) : $((X=X+1))


1
ทำไม“ ใครล้าน” จึงไม่อนุญาตให้สร้างผลผลิต
ใน IEEE Std 1003.1-2008 ฉบับปี 2559 (aka ข้อมูลจำเพาะของ Open Group Base Issue 7 หรือเพียงมาตรฐาน POSIX) ส่วน Rationale ของwhoยูทิลิตี้กล่าวถึงสิ่งต่อไปนี้: มันเป็นที่ยอมรับสำหรับการดำเนินการผลิตผลผลิตไม่มีการอุทธรณ์ของผู้ ล้านบาท ใครคือ "mil" ทำไมการดำเนินการได้รับอนุญาตให้ผลิตออกไม่who mil?
16 history  posix  who 

3
จำกัด POSIX ค้นหาความลึกที่เฉพาะเจาะจงหรือไม่
ฉันสังเกตเห็นเมื่อเร็ว ๆ นี้ว่าข้อกำหนด POSIX สำหรับfindไม่รวมคุณสมบัติ-maxdepthหลัก สำหรับผู้ที่ไม่คุ้นเคยวัตถุประสงค์-maxdepthหลักก็เพื่อ จำกัด จำนวนระดับที่ลึกfindลงไป -maxdepth 0ส่งผลให้อาร์กิวเมนต์บรรทัดรับคำสั่งเท่านั้นที่ถูกประมวลผล -maxdepth 1จะจัดการกับผลลัพธ์โดยตรงภายในอาร์กิวเมนต์บรรทัดคำสั่ง ฯลฯ ฉันจะได้รับพฤติกรรมเทียบเท่ากับ non-POSIX -maxdepthprimary โดยใช้เพียงตัวเลือกและเครื่องมือที่ระบุโดย POSIX ได้อย่างไร (หมายเหตุ: แน่นอนฉันสามารถเทียบเท่า-maxdepth 0โดยใช้-pruneเป็นตัวถูกดำเนินการแรก แต่ไม่ได้ขยายไปถึงความลึกอื่น ๆ )
15 find  posix 

2
ข้อไหนคือพกพาที่สุดของ sed, awk, perl และ sh?
ใครสามารถใส่เครื่องมือเหล่านี้ตามลำดับของการพกพา? ซึ่งเหล่านี้เป็นบางอย่างที่จะพบในได้มากที่สุดที่น้อยที่สุด * ระบบระวัง? เป็นของพวกเขา 100% แน่ใจว่าจะนำเสนอ? ฉันเดาว่าลำดับต่อไปนี้คือ: awk sed ดวลจุดโทษ Perl ในขณะที่ฉันจินตนาการว่ามีระบบที่ไม่เริ่มต้นเชลล์ bourne บางเชลล์จะปรากฏเป็นค่าเริ่มต้นที่จะอยู่ที่/bin/sh? ไม่น่าจะเป็นไปได้ว่ามันไม่ใช่เปลือกหอยชนิด Bourne ทั้งสองawkและsedมีหน้าอธิบายพวกเขาในสเปค POSIX ดังนั้นสันนิษฐานว่าพวกเขาจะมีอยู่เสมอ เป็นอย่างนั้นเหรอ? ฉันมั่นใจได้หรือไม่ว่าทั้งสองจะถูกติดตั้งบน * nix ใด ๆ ? รวมถึงระบบฝังตัว?

1
POSIX เทียบเท่ากับการหมดเวลาของ GNU หรือไม่
timeoutคำสั่งGNU coreutils มีประโยชน์อย่างยิ่งสำหรับสถานการณ์การเขียนสคริปต์บางอย่างซึ่งอนุญาตให้ใช้เอาต์พุตของคำสั่งหากมันรวดเร็วในการเรียกใช้และข้ามมันหากมันใช้เวลานานเกินไป ฉันจะประมาณพฤติกรรมพื้นฐานของการtimeoutใช้ยูทิลิตี้ที่ระบุเฉพาะ POSIX ได้อย่างไร (ฉันคิดว่ามันอาจจะเกี่ยวข้องกับการรวมกันของwait, sleep, killและผู้ที่รู้สิ่งอื่น แต่บางทีฉันหายไปวิธีการที่ง่ายขึ้น.)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.