sh - ออนไลน์ในคลาวด์

นี่คือคำสั่ง sh ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


สาด — ตัวแปลคำสั่ง (เชลล์)

เรื่องย่อ


สาด [-aCefnuvxIimqVEbp] [+aCefnuvxIimqVEbp] [-o OPTION_NAME] [+o OPTION_NAME]
[command_file [อาร์กิวเมนต์ ...]]
สาด -c [-aCefnuvxIimqVEbp] [+aCefnuvxIimqVEbp] [-o OPTION_NAME] [+o OPTION_NAME]
command_string [command_name [อาร์กิวเมนต์ ...]]
สาด -s [-aCefnuvxIimqVEbp] [+aCefnuvxIimqVEbp] [-o OPTION_NAME] [+o OPTION_NAME]
[อาร์กิวเมนต์ ...]

DESCRIPTION


สาด เป็นล่ามคำสั่งมาตรฐานสำหรับระบบ เวอร์ชั่นปัจจุบันของ สาด ที่อยู่ใน
กระบวนการเปลี่ยนแปลงเพื่อให้สอดคล้องกับข้อกำหนด POSIX 1003.2 และ 1003.2a สำหรับ
เปลือก เวอร์ชันนี้มีคุณสมบัติหลายอย่างที่ทำให้ดูคล้ายคลึงกันในบางส่วน
Korn shell แต่ไม่ใช่ Korn shell clone (ดู ครับ(1)). เฉพาะคุณสมบัติที่กำหนดโดย
POSIX บวกส่วนขยาย Berkeley สองสามรายการกำลังถูกรวมเข้ากับเชลล์นี้ ผู้ชายคนนี้
หน้าไม่ได้มีวัตถุประสงค์เพื่อเป็นบทช่วยสอนหรือคุณสมบัติที่สมบูรณ์ของเชลล์

ภาพรวมสินค้า
เชลล์เป็นคำสั่งที่อ่านบรรทัดจากไฟล์หรือเทอร์มินัล ตีความมัน
และโดยทั่วไปจะรันคำสั่งอื่นๆ เป็นโปรแกรมที่ทำงานเมื่อผู้ใช้เข้าสู่ระบบ
เข้าสู่ระบบ (แม้ว่าผู้ใช้จะสามารถเลือกเชลล์อื่นได้โดยใช้คำสั่ง ชช(1) คำสั่ง).
เชลล์ใช้ภาษาที่มีโครงสร้างการควบคุมการไหล สิ่งอำนวยความสะดวกแมโครที่
มีคุณสมบัติที่หลากหลายนอกเหนือจากการจัดเก็บข้อมูลพร้อมกับประวัติและ
ความสามารถในการแก้ไขบรรทัด รวมคุณสมบัติมากมายเพื่อช่วยในการใช้งานแบบโต้ตอบและมี
ข้อได้เปรียบที่ภาษาแปลเป็นภาษาทั่วไปทั้งแบบโต้ตอบและไม่โต้ตอบ
ใช้ (เชลล์สคริปต์) นั่นคือสามารถพิมพ์คำสั่งโดยตรงไปยังเชลล์ที่กำลังรันอยู่หรือสามารถ
ใส่ลงในไฟล์และไฟล์สามารถดำเนินการได้โดยตรงโดยเชลล์

การภาวนา
หากไม่มี args และหากอินพุตมาตรฐานของเชลล์เชื่อมต่อกับเทอร์มินัล (หรือ
ถ้า -i ตั้งค่าสถานะ) และ -c ไม่มีตัวเลือก เชลล์ถือเป็น
เปลือกแบบโต้ตอบ โดยทั่วไปแล้วเชลล์แบบโต้ตอบจะพร้อมต์ก่อนแต่ละคำสั่งและการจัดการ
ข้อผิดพลาดในการเขียนโปรแกรมและคำสั่งต่างกัน (ตามที่อธิบายไว้ด้านล่าง) เมื่อเริ่มต้นครั้งแรก
เชลล์ตรวจสอบอาร์กิวเมนต์ 0 และถ้ามันขึ้นต้นด้วยขีด '-' เชลล์จะถือว่าเป็นa .ด้วย
เปลือกเข้าสู่ระบบ โดยปกติระบบจะทำโดยอัตโนมัติเมื่อผู้ใช้เข้าสู่ระบบครั้งแรก
ล็อกอินเชลล์ก่อนจะอ่านคำสั่งจากไฟล์ / etc / profile และ .ข้อมูลส่วนตัว ถ้าพวกเขามีอยู่
หากตั้งค่าตัวแปรสภาพแวดล้อม ENV ในการเข้าสู่เชลล์แบบโต้ตอบ หรือตั้งค่าใน
.ข้อมูลส่วนตัว ของล็อกอินเชลล์ เชลล์ถัดไปจะอ่านคำสั่งจากไฟล์ที่มีชื่อใน ENV
ดังนั้น ผู้ใช้ควรวางคำสั่งที่จะดำเนินการเฉพาะในเวลาเข้าสู่ระบบใน
.ข้อมูลส่วนตัว ไฟล์ และคำสั่งที่ดำเนินการกับเชลล์แบบโต้ตอบทุกอันภายใน ENV
ไฟล์. ในการตั้งค่าตัวแปร ENV เป็นไฟล์บางไฟล์ ให้วางบรรทัดต่อไปนี้ใน your .ข้อมูลส่วนตัว of
โฮมไดเร็กตอรี่ของคุณ

ENV=$HOME/.shinit; ส่งออกENV

แทนที่ ".shinit" ชื่อไฟล์ใด ๆ ที่คุณต้องการ

หากมีการระบุอาร์กิวเมนต์บรรทัดคำสั่งนอกเหนือจากตัวเลือก เชลล์จะถือว่า
อาร์กิวเมนต์แรกเป็นชื่อของไฟล์ที่จะอ่านคำสั่ง (เชลล์สคริปต์) และ
อาร์กิวเมนต์ที่เหลือถูกกำหนดเป็นพารามิเตอร์ตำแหน่งของเชลล์ (1, $2, ฯลฯ)
มิฉะนั้น เชลล์จะอ่านคำสั่งจากอินพุตมาตรฐาน

ข้อโต้แย้ง รายการ กระบวนการผลิต
ตัวเลือกตัวอักษรเดี่ยวทั้งหมดที่มีชื่อตรงกันสามารถใช้เป็นอาร์กิวเมนต์ได้
ไป -o ตัวเลือก. ชุด -o มีการระบุชื่อไว้ข้างตัวเลือกตัวอักษรเดี่ยวใน
คำอธิบายด้านล่าง การระบุขีด "-" จะเปิดตัวเลือกในขณะที่ใช้เครื่องหมายบวก "+"
ปิดการใช้งานตัวเลือก ตัวเลือกต่อไปนี้สามารถตั้งค่าได้จากบรรทัดคำสั่งหรือด้วยปุ่ม เซ็ต
ในตัว (อธิบายในภายหลัง)

-a ส่งออกทั้งหมด ส่งออกตัวแปรทั้งหมดที่กำหนดให้กับ

-c อ่านคำสั่งจาก command_string ตัวถูกดำเนินการแทนจาก
อินพุตมาตรฐาน พารามิเตอร์พิเศษ 0 จะถูกตั้งค่าจาก
command_name ตัวถูกดำเนินการและพารามิเตอร์ตำแหน่ง ($ 1, $2, ฯลฯ )
ตั้งค่าจากตัวถูกดำเนินการอาร์กิวเมนต์ที่เหลือ

-C โนคลอบเบอร์ อย่าเขียนทับไฟล์ที่มีอยู่ด้วย “>”

-e ผิดพลาด หากไม่โต้ตอบ ให้ออกทันทีหากคำสั่งที่ยังไม่ได้ทดสอบล้มเหลว
สถานะการออกของคำสั่งจะถือว่าได้รับการทดสอบอย่างชัดเจน if
คำสั่งที่ใช้ควบคุม an if, elif, ในขณะที่หรือ จนกระทั่ง; หรือถ้า
คำสั่งเป็นตัวถูกดำเนินการทางซ้ายของ “&&” หรือ “||” โอเปอเรเตอร์

-f โนโกล ปิดใช้งานการขยายชื่อพาธ

-n noexec หากไม่โต้ตอบ ให้อ่านคำสั่งแต่ไม่ต้องดำเนินการ นี่คือ
มีประโยชน์สำหรับการตรวจสอบไวยากรณ์ของเชลล์สคริปต์

-u คำนาม เขียนข้อความถึงข้อผิดพลาดมาตรฐานเมื่อพยายามขยาย a
ตัวแปรที่ไม่ได้ตั้งค่าไว้ และหากเชลล์ไม่โต้ตอบ ให้ออก
โดยด่วน

-v ละเอียด เชลล์เขียนอินพุตไปยังข้อผิดพลาดมาตรฐานในขณะที่อ่าน มีประโยชน์
สำหรับการดีบัก

-x เอ็กซ์เทรซ เขียนแต่ละคำสั่งไปยังข้อผิดพลาดมาตรฐาน (นำหน้าด้วย '+ ') นำหน้ามัน
ถูกดำเนินการ มีประโยชน์สำหรับการดีบัก

-I ละเลย ละเว้น EOF จากอินพุตเมื่อโต้ตอบ

-i การโต้ตอบ บังคับให้เชลล์ทำงานแบบโต้ตอบ

-l ทำให้ dash ทำหน้าที่ราวกับว่ามันถูกเรียกใช้เป็นเชลล์การเข้าสู่ระบบ

-m หน้าจอ เปิดการควบคุมงาน (ตั้งค่าโดยอัตโนมัติเมื่อโต้ตอบ)

-s สเตดิน อ่านคำสั่งจากอินพุตมาตรฐาน (ตั้งค่าโดยอัตโนมัติหากไม่มีไฟล์
มีข้อโต้แย้งอยู่) ตัวเลือกนี้ไม่มีผลเมื่อตั้งค่าหลังจาก
เชลล์เริ่มทำงานแล้ว (เช่น กับ เซ็ต).

-V vi เปิดใช้งาน built-in vi(1) ตัวแก้ไขบรรทัดคำสั่ง (ปิดการใช้งาน -E ถ้ามี
กำหนดไว้แล้ว)

-E emacs เปิดใช้งาน built-in emacs(1) ตัวแก้ไขบรรทัดคำสั่ง (ปิดการใช้งาน -V ถ้ามัน
กำหนดไว้แล้ว)

-b แจ้ง เปิดใช้งานการแจ้งเตือนแบบอะซิงโครนัสของการเสร็จสิ้นงานพื้นหลัง
(ไม่ได้ใช้งานสำหรับ 4.4alpha)

-p ส่วนตัว อย่าพยายามรีเซ็ต uid ที่มีประสิทธิภาพ หากไม่ตรงกับ uid นี้
ไม่ได้ตั้งค่าตามค่าเริ่มต้นเพื่อช่วยหลีกเลี่ยงการใช้งานที่ไม่ถูกต้องโดย setuid root
โปรแกรมผ่าน ระบบ(3) หรือ เปิด(3)

คำศัพท์ โครงสร้าง
เชลล์อ่านอินพุตในแง่ของบรรทัดจากไฟล์และแบ่งออกเป็นคำที่
ช่องว่าง (ช่องว่างและแท็บ) และในลำดับอักขระบางตัวที่พิเศษสำหรับ
เชลล์เรียกว่า "ตัวดำเนินการ" ตัวดำเนินการมีสองประเภท: ตัวดำเนินการควบคุมและ
ตัวดำเนินการเปลี่ยนเส้นทาง (ความหมายจะกล่าวถึงในภายหลัง) ต่อไปนี้เป็นรายการของตัวดำเนินการ:

ตัวดำเนินการควบคุม:
&&& ( ) ; ;; | ||

ตัวดำเนินการเปลี่ยนเส้นทาง:
< > >| << >> <& >& <<- <>

quoting
การอ้างอิงใช้เพื่อลบความหมายพิเศษของอักขระหรือคำบางคำในเชลล์
เช่น ตัวดำเนินการ ช่องว่าง หรือคำหลัก การอ้างอิงมีสามประเภท: ที่ตรงกัน
อัญประกาศเดี่ยว อัญประกาศคู่ที่ตรงกัน และแบ็กสแลช

ทับขวา
แบ็กสแลชรักษาความหมายตามตัวอักษรของอักขระต่อไปนี้ ยกเว้น
⟨ขึ้นบรรทัดใหม่⟩. แบ็กสแลชที่นำหน้า ⟨ขึ้นบรรทัดใหม่ จะถือเป็นการต่อเนื่องของบรรทัด

เดียว คำคม
อักขระที่ล้อมรอบในเครื่องหมายคำพูดเดียวจะรักษาความหมายตามตัวอักษรของอักขระทั้งหมด
(ยกเว้นเครื่องหมายคำพูดเดี่ยว ทำให้ไม่สามารถใส่เครื่องหมายคำพูดเดียวในสตริงที่มีเครื่องหมายคำพูดเดียว)

สอง คำคม
อักขระที่ล้อมรอบภายในเครื่องหมายคำพูดคู่จะรักษาความหมายตามตัวอักษรของอักขระทั้งหมด
ยกเว้น ดอลลาร์เซ็นต์ ($), แบ็กสแลช (`) และแบ็กสแลช (\) แบ็กสแลชภายในเครื่องหมายคำพูดคู่
เป็นประวัติศาสตร์ที่แปลกประหลาด และใช้เพื่ออ้างอิงเฉพาะอักขระต่อไปนี้:
$ ` " \ .
มิฉะนั้นจะยังคงเป็นตัวอักษร

ที่สงวนไว้ คำ
คำสงวน คือ คำที่มีความหมายพิเศษต่อเปลือกและเป็นที่รู้จักที่
จุดเริ่มต้นของบรรทัดและหลังตัวดำเนินการควบคุม ต่อไปนี้เป็นคำสงวน:

! elif fi ในขณะที่ case
อย่างอื่นสำหรับแล้ว { }
ทำจนถ้า esac

ความหมายของพวกเขาจะกล่าวถึงในภายหลัง

นามแฝง
นามแฝงคือชื่อและค่าที่เกี่ยวข้องที่กำหนดโดยใช้ นามแฝง(1) คำสั่งในตัว เมื่อไหร่ก็ได้
คำสงวนอาจเกิดขึ้น (ดูด้านบน) และหลังจากตรวจสอบคำสงวนแล้ว เปลือก
ตรวจสอบคำเพื่อดูว่าตรงกับนามแฝงหรือไม่ ถ้าใช่ มันจะแทนที่ในอินพุต
สตรีมด้วยคุณค่าของมัน ตัวอย่างเช่น หากมีนามแฝงที่เรียกว่า “lf” ที่มีค่า “ls
-F” จากนั้นอินพุต:

lf foobar ⟨กลับมา⟩

จะกลายเป็น

ls -F foobar ⟨กลับ⟩

นามแฝงให้วิธีที่สะดวกสำหรับผู้ใช้ที่ไร้เดียงสาในการสร้างชวเลขสำหรับคำสั่งโดยไม่ต้อง
ต้องเรียนรู้วิธีสร้างฟังก์ชันด้วยอาร์กิวเมนต์ พวกเขายังสามารถใช้เพื่อสร้าง
รหัสคลุมเครือ การใช้งานนี้ท้อใจ

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

ง่าย คำสั่ง
หากระบบรู้จักคำสั่งอย่างง่าย เชลล์จะดำเนินการดังต่อไปนี้:

1. คำนำของแบบฟอร์ม “name=value” จะถูกถอดออกและกำหนดให้กับ
สภาพแวดล้อมของคำสั่งง่ายๆ ตัวดำเนินการเปลี่ยนเส้นทางและอาร์กิวเมนต์ (as
อธิบายไว้ด้านล่าง) ถูกถอดออกและบันทึกไว้สำหรับการประมวลผล

2. คำที่เหลือจะถูกขยายตามที่อธิบายไว้ในส่วนที่เรียกว่า "การขยาย"
และคำแรกที่เหลือถือเป็นชื่อคำสั่งและคำสั่งคือ
ตั้งอยู่. คำที่เหลือถือเป็นอาร์กิวเมนต์ของคำสั่ง ถ้าไม่
ผลลัพธ์ของชื่อคำสั่ง จากนั้นการกำหนดตัวแปร "name=value" ที่รู้จักใน
รายการที่ 1 ส่งผลต่อเชลล์ปัจจุบัน

3. การเปลี่ยนเส้นทางจะดำเนินการตามที่อธิบายไว้ในส่วนถัดไป

เปลี่ยนเส้นทาง
การเปลี่ยนเส้นทางใช้เพื่อเปลี่ยนตำแหน่งที่คำสั่งอ่านอินพุตหรือส่งออกเอาต์พุต ใน
ทั่วไป การเปลี่ยนเส้นทางเปิด ปิด หรือทำซ้ำการอ้างอิงที่มีอยู่ไปยังไฟล์ NS
รูปแบบโดยรวมที่ใช้สำหรับการเปลี่ยนเส้นทางคือ:

[N] ปรับปรุงใหม่ ไฟล์

ที่ไหน ปรับปรุงใหม่ เป็นหนึ่งในตัวดำเนินการเปลี่ยนเส้นทางที่กล่าวถึงก่อนหน้านี้ ต่อไปนี้คือ
รายการการเปลี่ยนเส้นทางที่เป็นไปได้ [n] เป็นตัวเลขเสริม เช่นใน '3' (ไม่ใช่ '[3]')
ที่อ้างถึงตัวอธิบายไฟล์

[n]> file เปลี่ยนเส้นทางเอาต์พุตมาตรฐาน (หรือ n) ไปยังไฟล์

[n]>| ไฟล์เดียวกัน แต่แทนที่ -C ตัวเลือก

[n]>> file เพิ่มเอาต์พุตมาตรฐาน (หรือ n) ต่อท้ายไฟล์

[n]< file Redirect อินพุตมาตรฐาน (หรือ n) จากไฟล์

[n1]<&n2 อินพุตมาตรฐานที่ซ้ำกัน (หรือ n1) จาก file descriptor n2

[n]<&- ปิดอินพุตมาตรฐาน (หรือ n)

[n1]>&n2 เอาต์พุตมาตรฐานที่ซ้ำกัน (หรือ n1) ถึง n2

[n]>&- ปิดเอาต์พุตมาตรฐาน (หรือ n)

[n]<> file เปิดไฟล์สำหรับอ่านและเขียนด้วยอินพุตมาตรฐาน (หรือ n)

การเปลี่ยนเส้นทางต่อไปนี้มักเรียกว่า "เอกสารที่นี่"

[n]<< ตัวคั่น
ที่นี่-doc-text ...
ตัวคั่น

ข้อความทั้งหมดในบรรทัดที่ต่อเนื่องกันจนถึงตัวคั่นจะถูกบันทึกไว้และทำให้พร้อมใช้งานสำหรับ
คำสั่งบนอินพุตมาตรฐาน หรือ file descriptor n หากระบุไว้ ถ้าตัวคั่นเป็น
ระบุไว้ในบรรทัดเริ่มต้น จากนั้นจึงถือว่า here-doc-text ตามตัวอักษร
มิฉะนั้นข้อความจะถูกขยายพารามิเตอร์ การแทนที่คำสั่ง และเลขคณิต
การขยาย (ตามที่อธิบายไว้ในส่วน "ส่วนขยาย") หากตัวดำเนินการคือ “<<-” แทน
ของ “<<” จากนั้นแท็บนำหน้าใน here-doc-text จะถูกถอดออก

ค้นหา และ การกระทำ
คำสั่งมีสามประเภท: ฟังก์ชันเชลล์ คำสั่งในตัว และโปรแกรมปกติ --
และคำสั่งจะถูกค้นหา (ตามชื่อ) ตามลำดับนั้น พวกเขาแต่ละคนถูกประหารชีวิตในa
วิธีการที่แตกต่างกัน.

เมื่อเรียกใช้ฟังก์ชันเชลล์ พารามิเตอร์ตำแหน่งเชลล์ทั้งหมด (ยกเว้น $0 ซึ่ง
ยังคงไม่เปลี่ยนแปลง) ถูกตั้งค่าเป็นอาร์กิวเมนต์ของฟังก์ชันเชลล์ ตัวแปรที่เป็น
วางไว้อย่างชัดเจนในสภาพแวดล้อมของคำสั่ง (โดยวางการกำหนดให้กับพวกเขาก่อน
ชื่อฟังก์ชัน) ถูกกำหนดให้เป็นฟังก์ชันและตั้งค่าเป็นค่าที่กำหนด จากนั้น
คำสั่งที่กำหนดในนิยามฟังก์ชันจะถูกดำเนินการ พารามิเตอร์ตำแหน่งคือ
กลับคืนสู่ค่าเดิมเมื่อคำสั่งเสร็จสิ้น ทั้งหมดนี้เกิดขึ้นภายใน
เปลือกปัจจุบัน

เชลล์บิวด์อินถูกเรียกใช้งานภายในเชลล์ โดยไม่ทำให้เกิดกระบวนการใหม่

มิฉะนั้น หากชื่อคำสั่งไม่ตรงกับฟังก์ชันหรือบิวท์อิน คำสั่งจะถูกค้นหา
สำหรับเป็นโปรแกรมปกติในระบบไฟล์ (ตามที่อธิบายไว้ในหัวข้อถัดไป) เมื่อ
โปรแกรมปกติถูกเรียกใช้งาน เชลล์รันโปรแกรม ส่งผ่านอาร์กิวเมนต์และ
สภาพแวดล้อมของโปรแกรม หากโปรแกรมไม่ใช่ไฟล์ปฏิบัติการปกติ (เช่น ถ้ามัน
ไม่ได้ขึ้นต้นด้วย "เลขมหัศจรรย์" ซึ่งแสดง ASCII เป็น "#!" ดังนั้น ผู้บริหาร(2)
ส่งคืน ENOEXEC จากนั้น) เชลล์จะตีความโปรแกรมในเชลล์ย่อย เปลือกเด็ก
จะเริ่มต้นตัวเองใหม่ในกรณีนี้ เพื่อให้เอฟเฟกต์เป็นเหมือนเชลล์ใหม่ที่ได้รับ
เรียกใช้เพื่อจัดการสคริปต์เชลล์เฉพาะกิจ ยกเว้นตำแหน่งของคำสั่งที่แฮช
ที่อยู่ในเปลือกหลักจะถูกจดจำโดยเด็ก

โปรดทราบว่าเวอร์ชันก่อนหน้าของเอกสารนี้และซอร์สโค้ดนั้นทำให้เข้าใจผิดและ
อ้างถึงเชลล์สคริปต์เป็นระยะๆ โดยไม่มีตัวเลขมหัศจรรย์ว่าเป็น "ขั้นตอนของเชลล์"

เส้นทาง ค้นหา
เมื่อค้นหาคำสั่ง เชลล์จะดูก่อนว่ามีฟังก์ชันของเชลล์หรือไม่
ชื่อ. จากนั้นจะค้นหาคำสั่งบิวด์อินตามชื่อนั้น หากไม่พบคำสั่งในตัว
หนึ่งในสองสิ่งที่เกิดขึ้น:

1. ชื่อคำสั่งที่มีเครื่องหมายทับนั้นสามารถดำเนินการได้โดยไม่ต้องทำการค้นหาใดๆ

2. เชลล์ค้นหาแต่ละรายการใน PATH เพื่อค้นหาคำสั่ง คุณค่าของ PATH
ตัวแปรควรเป็นชุดของรายการที่คั่นด้วยเครื่องหมายทวิภาค แต่ละรายการประกอบด้วย a
ชื่อไดเร็กทอรี ไดเร็กทอรีปัจจุบันอาจถูกระบุโดยปริยายโดยว่างเปล่า
ชื่อไดเร็กทอรีหรืออย่างชัดเจนโดยจุดเดียว

คำสั่ง ทางออก สถานะ
แต่ละคำสั่งมีสถานะการออกที่สามารถส่งผลต่อการทำงานของคำสั่งเชลล์อื่น
กระบวนทัศน์คือคำสั่งออกด้วยศูนย์สำหรับปกติหรือสำเร็จและไม่ใช่ศูนย์สำหรับ
ความล้มเหลว ข้อผิดพลาด หรือข้อบ่งชี้ที่เป็นเท็จ man page สำหรับแต่ละคำสั่งควรระบุ
รหัสทางออกต่างๆ และความหมาย นอกจากนี้ คำสั่งในตัวส่งคืน exit
รหัสเช่นเดียวกับฟังก์ชันเชลล์ที่ดำเนินการ

หากคำสั่งประกอบด้วยการกำหนดตัวแปรทั้งหมด สถานะการออกของคำสั่ง
คือการแทนที่คำสั่งสุดท้าย หากมี มิฉะนั้น 0

ซับซ้อน คำสั่ง
คำสั่งที่ซับซ้อนคือการรวมกันของคำสั่งง่าย ๆ กับตัวดำเนินการควบคุมหรือสงวนไว้
คำ ร่วมกันสร้างคำสั่งที่ซับซ้อนที่ใหญ่ขึ้น โดยทั่วไป คำสั่งคือหนึ่งใน
ต่อไปนี้:

· คำสั่งง่ายๆ

· ท่อ

· รายการหรือรายการรวม

· คำสั่งผสม

· นิยามฟังก์ชัน

เว้นแต่จะระบุไว้เป็นอย่างอื่น สถานะการออกของคำสั่งจะเป็นของคำสั่งง่าย ๆ สุดท้าย
ดำเนินการโดยคำสั่ง

ท่อ
ไปป์ไลน์คือลำดับของคำสั่งตั้งแต่หนึ่งคำสั่งขึ้นไปที่คั่นด้วยตัวดำเนินการควบคุม | NS
เอาต์พุตมาตรฐานของทั้งหมดยกเว้นคำสั่งสุดท้ายเชื่อมต่อกับอินพุตมาตรฐานของ next
สั่งการ. เอาต์พุตมาตรฐานของคำสั่งสุดท้ายนั้นสืบทอดมาจากเชลล์ตามปกติ

รูปแบบของไปป์ไลน์คือ:

[!] command1 [| คำสั่ง2 ...]

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

หากไปป์ไลน์ไม่อยู่ในพื้นหลัง (จะกล่าวถึงในภายหลัง) เชลล์จะรอคำสั่งทั้งหมด
ให้เสร็จสมบูรณ์

หากเป็นคำสงวน ! ไม่นำหน้าไปป์ไลน์ สถานะออกคือสถานะออกของ
คำสั่งสุดท้ายที่ระบุในไปป์ไลน์ มิฉะนั้น สถานะการออกจะเป็นตรรกะ NOT
ของสถานะการออกของคำสั่งสุดท้าย นั่นคือถ้าคำสั่งสุดท้ายคืนค่าศูนย์ exit
สถานะคือ 1; ถ้าคำสั่งสุดท้ายส่งกลับค่าที่มากกว่าศูนย์ สถานะการออกจะเป็นศูนย์

เนื่องจากการกำหนดไปป์ไลน์ของอินพุตมาตรฐานหรือเอาต์พุตมาตรฐานหรือทั้งสองอย่างเกิดขึ้นก่อน
การเปลี่ยนเส้นทางสามารถแก้ไขได้โดยการเปลี่ยนเส้นทาง ตัวอย่างเช่น:

$ command1 2>&1 | command2

ส่งทั้งเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานของ command1 ไปยังอินพุตมาตรฐานของ
คำสั่ง2

NS ; หรือ ⟨newline⟩ Terminator ทำให้รายการ AND-OR-list ก่อนหน้า (อธิบายต่อไป) ถูกดำเนินการ
ตามลำดับ; a & ทำให้เกิดการดำเนินการแบบอะซิงโครนัสของรายการ AND-OR- ก่อนหน้า

โปรดทราบว่าไม่เหมือนกับเชลล์อื่นๆ แต่ละกระบวนการในไพพ์ไลน์เป็นลูกของการเรียกใช้
เชลล์ (เว้นแต่จะเป็นเชลล์บิวด์อิน ซึ่งในกรณีนี้ เชลล์รันในเชลล์ปัจจุบัน -- แต่
ผลกระทบใด ๆ ที่มีต่อสิ่งแวดล้อมจะถูกเช็ด)

พื้นหลัง คำสั่ง -- &
หากคำสั่งถูกยกเลิกโดยตัวดำเนินการควบคุมและเครื่องหมาย (&) เชลล์จะดำเนินการ
คำสั่งแบบอะซิงโครนัส -- นั่นคือ เชลล์ไม่รอให้คำสั่งเสร็จสิ้นก่อน
ดำเนินการคำสั่งต่อไป

รูปแบบสำหรับการรันคำสั่งในพื้นหลังคือ:

command1 & [command2 & ...]

หากเชลล์ไม่โต้ตอบ อินพุตมาตรฐานของคำสั่งอะซิงโครนัสจะถูกตั้งค่าเป็น
/ dev / null.

รายการ -- โดยทั่วไป การพูด
รายการคือลำดับของคำสั่งศูนย์หรือมากกว่าที่คั่นด้วยการขึ้นบรรทัดใหม่ อัฒภาค หรือ
เครื่องหมายและ และเลือกที่จะยุติโดยหนึ่งในสามอักขระเหล่านี้ คำสั่งใน a
รายการจะดำเนินการตามลำดับที่เขียน ถ้าคำสั่งตามด้วยเครื่องหมายและ
เชลล์เริ่มคำสั่งและดำเนินการคำสั่งถัดไปทันที อย่างอื่นมัน
รอให้คำสั่งยุติก่อนที่จะดำเนินการต่อไป

ไฟฟ้าลัดวงจร รายการ โอเปอร์เตอร์-ผู้ประกอบการ
“&&” และ “||” เป็นตัวดำเนินการรายการ AND-OR “&&” รันคำสั่งแรก จากนั้นรัน
คำสั่งที่สอง iff สถานะการออกของคำสั่งแรกเป็นศูนย์ “||” คล้ายกันแต่
ดำเนินการคำสั่งที่สองหากสถานะการออกของคำสั่งแรกไม่ใช่ศูนย์ "&&" และ
“||” ทั้งสองมีลำดับความสำคัญเท่ากัน

ควบคุมการไหล สร้าง -- ถ้า, ในขณะที่, สำหรับ, กรณี
ไวยากรณ์ของคำสั่ง if คือ

ถ้ารายการ
แล้วรายการ
[ รายการเอลฟ์
แล้วรายการ ] ...
[ รายการอื่น ]
fi

ไวยากรณ์ของคำสั่ง while คือ

ในขณะที่รายการ
ทำรายการ
ทำ

รายการทั้งสองจะดำเนินการซ้ำๆ ในขณะที่สถานะการออกของรายการแรกเป็นศูนย์ NS
จนกว่าคำสั่งจะคล้ายกัน แต่มีคำว่า จนกว่า ในขณะที่ ซึ่งทำให้
ทำซ้ำจนกว่าสถานะการออกของรายการแรกจะเป็นศูนย์

ไวยากรณ์ของคำสั่ง for คือ

สำหรับตัวแปร [ ใน [ คำ ... ] ]
ทำรายการ
ทำ

คำที่ตามมา in ถูกขยาย จากนั้นรายการจะถูกดำเนินการซ้ำๆ ด้วยคำสั่ง
ตัวแปรที่ตั้งไว้ในแต่ละคำในทางกลับกัน การละคำ ... เทียบเท่ากับใน "$@"

ไวยากรณ์ของคำสั่ง break and continue คือ

แตก [ นัม ]
ดำเนินการต่อ [ num ]

Break สิ้นสุดจำนวนในสุดสำหรับหรือ while ลูป ต่อด้วยตอนต่อไป
การวนซ้ำของวงในสุด สิ่งเหล่านี้ถูกนำไปใช้เป็นคำสั่งในตัว

ไวยากรณ์ของคำสั่ง case คือ

คำกรณีใน
[(]รูปแบบ) รายการ ;;
...
ว่า C

รูปแบบสามารถเป็นได้ตั้งแต่หนึ่งรูปแบบขึ้นไป (ดู เปลือก รูปแบบ อธิบายในภายหลัง)
คั่นด้วย “|” ตัวอักษร อักขระ “(” ก่อนรูปแบบเป็นทางเลือก

หมวดหมู่ คำสั่ง ร่วมกัน
คำสั่งอาจจัดกลุ่มโดยการเขียนอย่างใดอย่างหนึ่ง

(รายการ)

or

{ รายการ; }

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

{ printf " สวัสดี " ; printf " world\n" ; } > ทักทาย

โปรดทราบว่า “}” ต้องปฏิบัติตามตัวดำเนินการควบคุม (ในที่นี้ “;”) เพื่อให้รับรู้เป็น
คำสงวนและไม่ใช่อาร์กิวเมนต์คำสั่งอื่น

ฟังก์ชั่น
ไวยากรณ์ของคำนิยามฟังก์ชันคือ

ชื่อ () คำสั่ง

นิยามฟังก์ชันคือคำสั่งที่เรียกใช้งานได้ เมื่อดำเนินการจะติดตั้งฟังก์ชันชื่อ
ชื่อและส่งคืนสถานะการออกเป็นศูนย์ โดยปกติคำสั่งจะเป็นรายการระหว่าง
"{" และ "}".

ตัวแปรอาจถูกประกาศให้เป็นฟังก์ชันภายในเครื่องโดยใช้คำสั่งท้องถิ่น นี้ควร
ปรากฏเป็นคำสั่งแรกของฟังก์ชัน และไวยากรณ์คือ

ท้องถิ่น [ตัวแปร | -] ...

Local ถูกนำไปใช้เป็นคำสั่งในตัว

เมื่อตัวแปรถูกทำให้โลคัล ตัวแปรจะรับค่าเริ่มต้นและแฟล็กที่เอ็กซ์พอร์ตและอ่านได้อย่างเดียว
จากตัวแปรที่มีชื่อเดียวกันในขอบเขตโดยรอบ หากมี มิฉะนั้น,
ตัวแปรนี้ไม่ได้ตั้งค่าในขั้นต้น เชลล์ใช้การกำหนดขอบเขตแบบไดนามิก ดังนั้นหากคุณสร้าง
ตัวแปร x โลคัลไปยังฟังก์ชัน f ซึ่งจะเรียกใช้ฟังก์ชัน g อ้างอิงถึงตัวแปร x
สร้างภายใน g จะอ้างถึงตัวแปร x ที่ประกาศภายใน f ไม่ใช่ตัวแปรส่วนกลาง
ชื่อ x

พารามิเตอร์พิเศษเพียงอย่างเดียวที่สามารถสร้างในเครื่องได้คือ “-” ทำให้ "-" โลคัลเชลล์ใด ๆ
ตัวเลือกที่เปลี่ยนแปลงผ่านคำสั่ง set ภายในฟังก์ชันเพื่อกู้คืนเป็น
ค่าเดิมเมื่อฟังก์ชันส่งคืน

ไวยากรณ์ของคำสั่ง return คือ

กลับ [exitstatus]

จะยุติฟังก์ชันที่ดำเนินการอยู่ในปัจจุบัน Return ถูกนำมาใช้เป็นคำสั่งในตัว

ตัวแปร และ พารามิเตอร์
เชลล์รักษาชุดของพารามิเตอร์ไว้ พารามิเตอร์ที่ระบุโดยชื่อเรียกว่าa
ตัวแปร. เมื่อเริ่มต้น เชลล์จะเปลี่ยนตัวแปรสภาพแวดล้อมทั้งหมดให้เป็นเชลล์
ตัวแปร ตัวแปรใหม่สามารถตั้งค่าได้โดยใช้ form

ชื่อ=ค่า

ตัวแปรที่กำหนดโดยผู้ใช้ต้องมีชื่อที่ประกอบด้วยตัวอักษร ตัวเลข และ . เท่านั้น
ขีดล่าง - อันแรกต้องไม่เป็นตัวเลข พารามิเตอร์ยังสามารถแสดงด้วย a
ตัวเลขหรืออักขระพิเศษตามที่อธิบายไว้ด้านล่าง

ตำแหน่ง พารามิเตอร์
พารามิเตอร์ตำแหน่งคือพารามิเตอร์ที่แสดงด้วยตัวเลข (n > 0) เปลือกตั้งค่าเหล่านี้
เริ่มแรกเป็นค่าของอาร์กิวเมนต์บรรทัดคำสั่งที่ตามหลังชื่อของshell
สคริปต์ NS เซ็ต บิวด์อินยังสามารถใช้เพื่อตั้งค่าหรือรีเซ็ตได้

พิเศษ พารามิเตอร์
พารามิเตอร์พิเศษคือพารามิเตอร์ที่แสดงโดยหนึ่งในอักขระพิเศษต่อไปนี้ NS
ค่าของพารามิเตอร์แสดงอยู่ถัดจากอักขระ

* ขยายไปยังพารามิเตอร์ตำแหน่งโดยเริ่มจากหนึ่ง เมื่อการขยายตัว
เกิดขึ้นภายในสตริงที่มีเครื่องหมายอัญประกาศคู่ ซึ่งจะขยายเป็นฟิลด์เดียวกับ
ค่าของพารามิเตอร์แต่ละตัวคั่นด้วยอักขระตัวแรกของตัวแปร IFS
หรือโดย ⟨space⟩ หากไม่ได้ตั้งค่า IFS

@ ขยายเป็นพารามิเตอร์ตำแหน่งโดยเริ่มจากตัวเดียว เมื่อการขยายตัว
เกิดขึ้นภายในเครื่องหมายคำพูดคู่ พารามิเตอร์ตำแหน่งแต่ละตัวจะขยายแยกกัน
การโต้แย้ง. หากไม่มีพารามิเตอร์ตำแหน่ง การขยาย @ สร้าง
อาร์กิวเมนต์เป็นศูนย์ แม้ว่า @ จะถูกอัญประกาศสองครั้ง โดยพื้นฐานแล้วสิ่งนี้หมายความว่าอย่างไร สำหรับ
ตัวอย่างเช่น ถ้า $1 คือ “abc” และ $2 คือ “def ghi” ดังนั้น "$@" จะขยายเป็นสอง
ข้อโต้แย้ง:

"abc" "def ghi"

# ขยายเป็นจำนวนของพารามิเตอร์ตำแหน่ง

? ขยายไปยังสถานะทางออกของไปป์ไลน์ล่าสุด

- (ยัติภังค์) ขยายเป็นแฟล็กตัวเลือกปัจจุบัน (ชื่อตัวเลือกตัวอักษรเดียว
ต่อกันเป็นสตริง) ตามที่ระบุไว้ในการร้องขอ โดยชุด buildin
คำสั่งหรือโดยปริยายโดยเชลล์

$ ขยายเป็น ID กระบวนการของเชลล์ที่เรียกใช้ เชลล์ย่อยยังคงเหมือนเดิม
มูลค่า $ เป็นพาเรนต์

! ขยายเป็น ID กระบวนการของคำสั่งพื้นหลังล่าสุดที่ดำเนินการจาก
เปลือกปัจจุบัน สำหรับไปป์ไลน์ ID กระบวนการจะเป็นของคำสั่งสุดท้าย
ในท่อ.

0 (ศูนย์) ขยายเป็นชื่อของเชลล์หรือเชลล์สคริปต์

คำ ขยาย
ประโยคนี้อธิบายการขยายต่างๆ ที่ทำกับคำ ไม่ทั้งหมด
มีการขยายคำทุกคำ ดังจะอธิบายในภายหลัง

การขยายตัวหนอน การขยายพารามิเตอร์ การแทนที่คำสั่ง การขยายเลขคณิต และ
การลบคำพูดที่เกิดขึ้นภายในคำเดียวขยายเป็นฟิลด์เดียว เป็นสนามเท่านั้น
การแยกหรือการขยายชื่อพาธที่สามารถสร้างหลายฟิลด์จากคำเดียว NS
ข้อยกเว้นเดียวสำหรับกฎนี้คือการขยายพารามิเตอร์พิเศษ @ ภายใน double-
คำพูดตามที่อธิบายไว้ข้างต้น

ลำดับของการขยายคำคือ:

1. การขยายตัวหนอน, การขยายพารามิเตอร์, การแทนที่คำสั่ง, การขยายเลขคณิต (เหล่านี้
เกิดขึ้นพร้อมกันทั้งหมด)

2. การแยกฟิลด์จะดำเนินการในฟิลด์ที่สร้างโดยขั้นตอน (1) เว้นแต่ว่าตัวแปร IFS คือ
โมฆะ

3. การขยายชื่อพาธ (เว้นแต่ set -f มีผลบังคับใช้)

4. การลบใบเสนอราคา

อักขระ $ ใช้เพื่อแนะนำการขยายพารามิเตอร์ การแทนที่คำสั่ง หรือ
การประเมินทางคณิตศาสตร์

ตัวหนอน การขยายตัว (แทน a ของผู้ใช้ หน้าแรก ไดเรกทอรี)
คำที่ขึ้นต้นด้วยอักขระตัวหนอนที่ไม่ได้ใส่เครื่องหมายคำพูด (~) จะถูกขยายด้วยเครื่องหมายตัวหนอน ทั้งหมด
อักขระที่ขึ้นไปจนถึงเครื่องหมายทับ (/) หรือจุดสิ้นสุดของคำถือเป็นชื่อผู้ใช้และ are
แทนที่ด้วยโฮมไดเร็กทอรีของผู้ใช้ หากชื่อผู้ใช้หายไป (เช่นใน ~/ฟูบาร์)
ตัวหนอนถูกแทนที่ด้วยค่าของ หน้าหลัก ตัวแปร (โฮมไดเร็กทอรีของผู้ใช้ปัจจุบัน)

พารามิเตอร์ การขยายตัว
รูปแบบการขยายพารามิเตอร์มีดังนี้:

${การแสดงออก}

โดยที่นิพจน์ประกอบด้วยอักขระทั้งหมดจนถึงการจับคู่ "}" “}” ใด ๆ ที่หลบหนีโดย
แบ็กสแลชหรือภายในสตริงที่ยกมา และอักขระในการขยายเลขคณิตแบบฝัง
การแทนที่คำสั่งและการขยายตัวแปรจะไม่ถูกตรวจสอบในการพิจารณาการจับคู่
“}”

รูปแบบที่ง่ายที่สุดสำหรับการขยายพารามิเตอร์คือ:

${พารามิเตอร์}

ค่า หากมี ของพารามิเตอร์จะถูกแทนที่

ชื่อพารามิเตอร์หรือสัญลักษณ์สามารถอยู่ในวงเล็บปีกกา ซึ่งเป็นทางเลือก ยกเว้น
พารามิเตอร์ตำแหน่งที่มีมากกว่าหนึ่งหลักหรือเมื่อพารามิเตอร์ตามด้วยตัวอักษร
ที่สามารถตีความได้ว่าเป็นส่วนหนึ่งของชื่อ หากเกิดการขยายพารามิเตอร์ภายใน
คำพูดคู่:

1. การขยายชื่อพาธไม่ได้ดำเนินการกับผลลัพธ์ของการขยาย

2. การแยกฟิลด์จะไม่ดำเนินการกับผลลัพธ์ของการขยาย ยกเว้น
@.

นอกจากนี้ การขยายพารามิเตอร์สามารถแก้ไขได้โดยใช้รูปแบบใดรูปแบบหนึ่งต่อไปนี้

${parameter:-word} ใช้ค่าเริ่มต้น หากไม่ได้ตั้งค่าพารามิเตอร์หรือเป็นโมฆะ การขยายของ
คำถูกแทนที่; มิฉะนั้น ค่าของพารามิเตอร์จะถูกแทนที่

${parameter:=word} กำหนดค่าเริ่มต้น หากไม่ได้ตั้งค่าพารามิเตอร์หรือเป็นโมฆะ การขยาย
ของคำถูกกำหนดให้กับพารามิเตอร์ ในทุกกรณีมูลค่าสุดท้ายของ
พารามิเตอร์ถูกแทนที่ เฉพาะตัวแปร ไม่ใช่พารามิเตอร์ตำแหน่ง
หรือพารามิเตอร์พิเศษสามารถกำหนดได้ด้วยวิธีนี้

${parameter:?[word]} ระบุว่ามีข้อผิดพลาดหากเป็น Null หรือ Unset หากไม่ได้ตั้งค่าพารามิเตอร์หรือเป็นค่าว่าง ค่า
การขยายคำ (หรือข้อความที่ระบุว่าไม่ได้ตั้งค่าหากคำคือ
ละเว้น) ถูกเขียนถึงข้อผิดพลาดมาตรฐานและเชลล์ออกด้วยa
สถานะการออกที่ไม่ใช่ศูนย์ มิฉะนั้น ค่าของพารามิเตอร์คือ
แทนที่ เชลล์แบบโต้ตอบไม่จำเป็นต้องออก

${parameter:+word} ใช้ค่าทางเลือก หากไม่ได้ตั้งค่าพารามิเตอร์หรือเป็นค่าว่าง ค่า null is
แทนที่; มิฉะนั้น การขยายคำจะถูกแทนที่

ในการขยายพารามิเตอร์ที่แสดงไว้ก่อนหน้านี้ การใช้เครื่องหมายทวิภาคในรูปแบบผลลัพธ์ในa
ทดสอบพารามิเตอร์ที่ไม่ได้ตั้งค่าหรือเป็นโมฆะ การละเลยของลำไส้ใหญ่ส่งผลให้มีการทดสอบ a
พารามิเตอร์ที่ไม่ได้ตั้งค่าเท่านั้น

${#parameter} ความยาวสตริง ความยาวเป็นอักขระของค่าพารามิเตอร์

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

${parameter%word} ลบรูปแบบคำต่อท้ายที่เล็กที่สุด ขยายคำเพื่อผลิต
ลวดลาย. การขยายพารามิเตอร์จะส่งผลให้เกิดพารามิเตอร์ โดยที่
ส่วนที่เล็กที่สุดของคำต่อท้ายตรงกับรูปแบบที่ถูกลบ

${parameter%%word} ลบรูปแบบคำต่อท้ายที่ใหญ่ที่สุด ขยายคำเพื่อผลิต
ลวดลาย. การขยายพารามิเตอร์จะส่งผลให้เกิดพารามิเตอร์ โดยที่
ส่วนต่อท้ายที่ใหญ่ที่สุดตรงกับรูปแบบที่ถูกลบ

${parameter#word} ลบรูปแบบคำนำหน้าที่เล็กที่สุด ขยายคำเพื่อผลิต
ลวดลาย. การขยายพารามิเตอร์จะส่งผลให้เกิดพารามิเตอร์ โดยที่
ส่วนที่เล็กที่สุดของคำนำหน้าตรงกับรูปแบบที่ถูกลบ

${parameter##word} ลบรูปแบบคำนำหน้าที่ใหญ่ที่สุด ขยายคำเพื่อผลิต
ลวดลาย. การขยายพารามิเตอร์จะส่งผลให้เกิดพารามิเตอร์ โดยที่
ส่วนที่ใหญ่ที่สุดของคำนำหน้าตรงกับรูปแบบที่ถูกลบ

คำสั่ง การแทน
การแทนที่คำสั่งอนุญาตให้แทนที่ผลลัพธ์ของคำสั่งแทน
ชื่อคำสั่งเอง การแทนที่คำสั่งจะเกิดขึ้นเมื่อมีการปิดคำสั่งดังต่อไปนี้:

$(คำสั่ง)

หรือ ("backquoted" เวอร์ชัน):

`คำสั่ง`

เชลล์ขยายการแทนที่คำสั่งโดยดำเนินการคำสั่งในสภาพแวดล้อมของเชลล์ย่อย
และแทนที่การแทนที่คำสั่งด้วยผลลัพธ์มาตรฐานของคำสั่ง ลบ
ลำดับของ ⟨ขึ้นบรรทัดใหม่⟩ หนึ่งส่วนหรือมากกว่าที่ส่วนท้ายของการแทนที่ (ฝัง ⟨newline⟩s
ก่อนสิ้นสุดการส่งออกจะไม่ถูกลบ อย่างไรก็ตามในระหว่างการแยกสนาม พวกเขาอาจจะ
แปลเป็น ⟨space⟩s ขึ้นอยู่กับมูลค่าของ IFS และใบเสนอราคาที่มีผลบังคับใช้)

คณิตศาสตร์ การขยายตัว
การขยายเลขคณิตให้กลไกในการประเมินนิพจน์เลขคณิตและ
แทนค่าของมัน รูปแบบการขยายเลขคณิตมีดังนี้:

$((นิพจน์))

นิพจน์จะถือว่าอยู่ในเครื่องหมายคำพูดคู่ ยกเว้นเครื่องหมายคำพูดคู่ภายใน
นิพจน์ไม่ได้รับการปฏิบัติเป็นพิเศษ เชลล์ขยายโทเค็นทั้งหมดในนิพจน์ for
การขยายพารามิเตอร์ การแทนที่คำสั่ง และการลบเครื่องหมายคำพูด

ต่อไป เชลล์ถือว่าสิ่งนี้เป็นนิพจน์เลขคณิตและแทนที่ค่าของ
การแสดงออก

สีขาว ช่องว่าง รุนแรง (สนาม แยก)
หลังจากการขยายพารามิเตอร์ การแทนที่คำสั่ง และการขยายเลขคณิต เชลล์จะสแกน
ผลลัพธ์ของการขยายและการแทนที่ที่ไม่เกิดขึ้นในเครื่องหมายคำพูดคู่สำหรับฟิลด์
การแยกและหลายฟิลด์สามารถส่งผลให้

เชลล์ปฏิบัติต่ออักขระแต่ละตัวของ IFS เป็นตัวคั่นและใช้ตัวคั่นเพื่อแยก
ผลลัพธ์ของการขยายพารามิเตอร์และการแทนที่คำสั่งลงในฟิลด์

ชื่อพาธ การขยายตัว (ไฟล์ ชื่อ รุ่น)
นอกเสียจาก -f ตั้งค่าสถานะแล้ว การสร้างชื่อไฟล์จะดำเนินการหลังจากการแยกคำคือ
เสร็จสิ้น. แต่ละคำถูกมองว่าเป็นชุดของรูปแบบ โดยคั่นด้วยเครื่องหมายทับ กระบวนการ
ของการขยายแทนที่คำด้วยชื่อของไฟล์ที่มีอยู่ทั้งหมดที่มีชื่อสามารถ
เกิดขึ้นจากการแทนที่แต่ละรูปแบบด้วยสตริงที่ตรงกับรูปแบบที่ระบุ ที่นั่น
มีข้อจำกัดสองประการในเรื่องนี้: อันดับแรก รูปแบบไม่สามารถจับคู่สตริงที่มีเครื่องหมายทับได้ และ
ประการที่สอง รูปแบบไม่สามารถจับคู่สตริงที่ขึ้นต้นด้วยจุด เว้นแต่อักขระตัวแรกของ
รูปแบบเป็นช่วงเวลา ส่วนถัดไปจะอธิบายรูปแบบที่ใช้สำหรับทั้ง Pathname
การขยายตัวและ กรณี คำสั่ง

เปลือก รูปแบบ
รูปแบบประกอบด้วยอักขระปกติซึ่งตรงกับตัวเอง และอักขระเมตา NS
อักขระเมตาคือ “!”, “*”, “?” และ “[” อักขระเหล่านี้สูญเสียความหมายพิเศษถ้า
พวกเขาถูกยกมา เมื่อดำเนินการแทนคำสั่งหรือตัวแปรและเครื่องหมายดอลลาร์หรือ
เครื่องหมายคำพูดย้อนกลับไม่ได้ถูกยกมาสองครั้ง ค่าของตัวแปรหรือผลลัพธ์ของคำสั่งคือ
สแกนหาอักขระเหล่านี้และเปลี่ยนเป็นอักขระเมตา

เครื่องหมายดอกจัน (“*”) จะจับคู่สตริงของอักขระใดๆ เครื่องหมายคำถามตรงกับทุกซิงเกิ้ล
อักขระ. วงเล็บด้านซ้าย (“[”) แนะนำคลาสอักขระ ตอนจบของตัวละคร
คลาสถูกระบุโดย (“]”); หาก "]" หายไป "[" จะตรงกับ "[" มากกว่า
แนะนำคลาสตัวละคร คลาสอักขระตรงกับอักขระใด ๆ ระหว่าง
วงเล็บเหลี่ยม สามารถระบุช่วงของอักขระโดยใช้เครื่องหมายลบ บทบาท
อาจเสริมด้วยการทำเครื่องหมายอัศเจรีย์เป็นอักขระตัวแรกของ
คลาสตัวละคร

หากต้องการรวม “]” ในคลาสอักขระ ให้กำหนดให้เป็นอักขระตัวแรกที่อยู่ในรายการ (หลัง “!”, if
ใด ๆ). หากต้องการใส่เครื่องหมายลบ ให้กำหนดให้เป็นอักขระตัวแรกหรือตัวสุดท้ายที่อยู่ในรายการ

บิลท์อิน
ส่วนนี้แสดงรายการคำสั่งบิวด์อินที่สร้างขึ้นเนื่องจากจำเป็นต้องดำเนินการบางอย่าง
การดำเนินการที่ไม่สามารถทำได้โดยกระบวนการแยกต่างหาก นอกจากนี้ยังมี
คำสั่งอื่นๆ ที่อาจสร้างขึ้นเพื่อประสิทธิภาพ (เช่น printf(1) เสียงสะท้อน(1)
ทดสอบ(1) เป็นต้น)

:

true คำสั่ง null ที่คืนค่าการออก 0 (จริง)

. ไฟล์
คำสั่งในไฟล์ที่ระบุจะถูกอ่านและดำเนินการโดยเชลล์

นามแฝง [พร้อมชื่อ[=สตริง ...]]
If ชื่อ=สตริง ถูกระบุ เชลล์กำหนดนามแฝง พร้อมชื่อ ด้วยมูลค่า เชือก. ถ้า
เพียงแค่ พร้อมชื่อ ระบุค่าของนามแฝง พร้อมชื่อ ถูกพิมพ์ โดยไม่มีข้อโต้แย้ง
นามแฝง builtin พิมพ์ชื่อและค่าของนามแฝงที่กำหนดไว้ทั้งหมด (ดู ยูนาเลีย).

บีจี [งาน] ...
ทำงานที่ระบุต่อไป (หรืองานปัจจุบันหากไม่มีงานที่ได้รับ) ใน
พื้นหลัง

สั่งการ [-p] [-v] [-V] คำสั่ง [หาเรื่อง ...]
ดำเนินการคำสั่งที่ระบุแต่ละเว้นฟังก์ชันของเชลล์เมื่อค้นหา
(สิ่งนี้มีประโยชน์เมื่อคุณมีฟังก์ชันเชลล์ที่มีชื่อเดียวกับ builtin
สั่งการ.)

-p ค้นหาคำสั่งโดยใช้ PATH ที่รับประกันว่าจะพบมาตรฐานทั้งหมด
สาธารณูปโภค.

-V อย่าดำเนินการคำสั่ง แต่ค้นหาคำสั่งและพิมพ์ความละเอียด
ของการค้นหาคำสั่ง นี้เหมือนกับชนิดในตัว

-v อย่ารันคำสั่งแต่ค้นหาคำสั่งและพิมพ์ Absolute
ชื่อพาธของยูทิลิตี้ ชื่อสำหรับบิวด์อิน หรือการขยายนามแฝง

cd -

ซีดี [-หจก] [ไดเรกทอรี]
สลับไปยังไดเร็กทอรีที่ระบุ (ค่าเริ่มต้น HOME) หากรายการสำหรับ CDPATH ปรากฏใน
สภาพแวดล้อมของ cd คำสั่งหรือตัวแปรเชลล์ CDPATH ถูกตั้งค่าและ
ชื่อไดเร็กทอรีไม่ได้ขึ้นต้นด้วยเครื่องหมายทับ ดังนั้นไดเร็กทอรีที่แสดงรายการในCDPATH
จะถูกค้นหาสำหรับไดเร็กทอรีที่ระบุ รูปแบบของ CDPATH เหมือนกับ
ของ PATH หากระบุขีดเดียวเป็นอาร์กิวเมนต์ จะถูกแทนที่ด้วย
มูลค่าของ OLDPWD NS cd คำสั่งจะพิมพ์ชื่อไดเร็กทอรีที่ it
จริง ๆ แล้วเปลี่ยนเป็นถ้ามันแตกต่างจากชื่อที่ผู้ใช้ให้ เหล่านี้
อาจแตกต่างกันเพราะใช้กลไก CDPATH หรือเพราะอาร์กิวเมนต์
เป็นเส้นประเดียว NS -P ตัวเลือกทำให้โครงสร้างฟิสิคัลไดเร็กทอรีถูกใช้
นั่นคือ ลิงก์สัญลักษณ์ทั้งหมดได้รับการแก้ไขตามค่าที่เกี่ยวข้อง NS -L ตัวเลือก
ปิดเอฟเฟกต์ใด ๆ ก่อนหน้านี้ -P ตัวเลือก

เสียงสะท้อน [-n] อาร์กิว...
พิมพ์อาร์กิวเมนต์บนเอาต์พุตมาตรฐาน คั่นด้วยช่องว่าง เว้นแต่ -n
มีตัวเลือก ขึ้นบรรทัดใหม่เป็นผลลัพธ์ตามอาร์กิวเมนต์

หากพบลำดับอักขระใด ๆ ต่อไปนี้ระหว่างเอาต์พุต
ลำดับไม่ออก การดำเนินการที่ระบุจะถูกดำเนินการแทน:

\b เอาต์พุตอักขระแบ็คสเปซ

\c เอาต์พุตที่ตามมาจะถูกระงับ ปกติจะใช้ต่อท้าย
อาร์กิวเมนต์สุดท้ายเพื่อระงับการขึ้นบรรทัดใหม่ว่า เสียงสะท้อน จะเป็นอย่างอื่น
เอาท์พุต

\f เอาต์พุตฟีดแบบฟอร์ม

\n ส่งออกอักขระขึ้นบรรทัดใหม่

\r ส่งออกการคืนสินค้า

\t ส่งออกอักขระแท็บ (แนวนอน)

\v แสดงผลแท็บแนวตั้ง

\0ตัวเลข
ส่งออกอักขระที่มีค่าเป็นศูนย์ถึงเลขฐานแปดสามหลัก ถ้า
มีเลขศูนย์ อักขระ null จะถูกส่งออก

\\ ส่งออกแบ็กสแลช

ลำดับแบ็กสแลชอื่นๆ ทั้งหมดทำให้เกิดพฤติกรรมที่ไม่ได้กำหนดไว้

ประเมิน เชือก ...
เชื่อมอาร์กิวเมนต์ทั้งหมดด้วยช่องว่าง จากนั้นแยกวิเคราะห์ใหม่และดำเนินการคำสั่ง

ผู้บริหาร [คำสั่ง หาเรื่อง ...]
เว้นแต่ละคำสั่ง กระบวนการเชลล์จะถูกแทนที่ด้วย program . ที่ระบุ
(ซึ่งต้องเป็นโปรแกรมจริง ไม่ใช่เชลล์บิวด์อินหรือฟังก์ชัน) การเปลี่ยนเส้นทางใด ๆ บน
exec คำสั่งถูกทำเครื่องหมายเป็นการถาวร เพื่อไม่ให้ยกเลิกเมื่อ exec
คำสั่งเสร็จสิ้น

ทางออก [สถานะทางออก]
ยุติกระบวนการเชลล์ ถ้า สถานะทางออก กำหนดให้ใช้เป็นสถานะออกของ
เปลือก; มิฉะนั้น สถานะการออกของคำสั่งก่อนหน้าจะถูกใช้

ส่งออก พร้อมชื่อ ...

ส่งออก -p
ชื่อที่ระบุจะถูกส่งออกเพื่อให้ปรากฏในสภาพแวดล้อมของ
คำสั่งที่ตามมา วิธีเดียวที่จะยกเลิกการส่งออกตัวแปรคือยกเลิกการตั้งค่า เปลือก
อนุญาตให้กำหนดค่าของตัวแปรในเวลาเดียวกันกับการส่งออกโดยการเขียน

ชื่อการส่งออก=ค่า

ไม่มีอาร์กิวเมนต์ คำสั่ง export จะแสดงรายการชื่อของตัวแปรที่เอ็กซ์พอร์ตทั้งหมด กับ
-p ตัวเลือกที่ระบุเอาต์พุตจะถูกจัดรูปแบบให้เหมาะสมสำหรับการไม่โต้ตอบ
ใช้

เอฟซี [-e บรรณาธิการ] [เป็นครั้งแรก [ล่าสุด]]

fc -l [-ไม่มี] [เป็นครั้งแรก [ล่าสุด]]

fc -s [เก่า=ใหม่] [เป็นครั้งแรก]
การขอ fc รายการในตัว หรือแก้ไขและดำเนินการใหม่ คำสั่งที่ป้อนก่อนหน้านี้ไปยัง
เปลือกแบบโต้ตอบ

-e บรรณาธิการ
ใช้เอดิเตอร์ที่ตั้งชื่อโดยเอดิเตอร์เพื่อแก้ไขคำสั่ง สตริงตัวแก้ไขคือ a
ชื่อคำสั่ง ขึ้นอยู่กับการค้นหาผ่านตัวแปร PATH ค่าใน
ตัวแปร FCEDIT ถูกใช้เป็นค่าเริ่มต้นเมื่อ -e ไม่ได้ระบุไว้ ถ้า FCEDIT คือ
null หรือ unset จะใช้ค่าของตัวแปร EDITOR หาก EDITOR เป็นโมฆะหรือ
ยกเลิกการตั้งค่า ed(1) ใช้เป็นบรรณาธิการ

-l (เอล)
แสดงรายการคำสั่งแทนที่จะเรียกใช้ตัวแก้ไข คำสั่งคือ
เขียนในลำดับที่ระบุโดยตัวถูกดำเนินการตัวแรกและตัวสุดท้ายที่ได้รับผลกระทบ
by -rโดยแต่ละคำสั่งนำหน้าด้วยหมายเลขคำสั่ง

-n ระงับหมายเลขคำสั่งเมื่อแสดงรายการด้วย -l

-r ย้อนกลับลำดับของคำสั่งที่แสดง (ด้วย -l) หรือแก้ไข (โดยที่ -l
ไม่ -s).

-s รันคำสั่งอีกครั้งโดยไม่เรียกใช้เอดิเตอร์

เป็นครั้งแรก

ล่าสุด เลือกคำสั่งที่จะแสดงรายการหรือแก้ไข จำนวนคำสั่งก่อนหน้านี้ที่สามารถ
เข้าถึงได้ถูกกำหนดโดยค่าของตัวแปร HISTSIZE มูลค่า
ครั้งแรกหรือครั้งสุดท้ายหรือทั้งสองอย่างใดอย่างหนึ่งต่อไปนี้:

[+]หมายเลข
จำนวนบวกแทนหมายเลขคำสั่ง; ตัวเลขคำสั่งสามารถ
แสดงด้วย -l ตัวเลือก

-จำนวน
เลขทศนิยมลบแทนคำสั่งที่ดำเนินการ
จำนวนคำสั่งก่อนหน้านี้ ตัวอย่างเช่น -1 คือค่าทันที
คำสั่งก่อนหน้า

เชือก
สตริงที่ระบุคำสั่งที่ป้อนล่าสุดที่ขึ้นต้นด้วย that
สตริง ถ้าตัวถูกดำเนินการ old=new ไม่ได้ระบุด้วย -s, รูปแบบสตริง
ของตัวถูกดำเนินการแรกไม่สามารถมีเครื่องหมายเท่ากับที่ฝังอยู่

ตัวแปรสภาพแวดล้อมต่อไปนี้ส่งผลต่อการดำเนินการของ fc:

FCEDIT ชื่อเอดิเตอร์ที่จะใช้

HISTSIZE จำนวนคำสั่งก่อนหน้านี้ที่สามารถเข้าถึงได้

เอฟจี [งาน]
ย้ายงานที่ระบุหรืองานปัจจุบันไปที่เบื้องหน้า

รับ เลือกสตริง คือ
POSIX รับ คำสั่งไม่ให้สับสนกับ ระฆัง ห้องปฏิบัติการ - ได้รับ รับ(1)

อาร์กิวเมนต์แรกควรเป็นชุดของตัวอักษร ซึ่งแต่ละอาร์กิวเมนต์สามารถเลือกได้
ตามด้วยเครื่องหมายทวิภาคเพื่อระบุว่าตัวเลือกต้องมีอาร์กิวเมนต์ ตัวแปร
ที่ระบุถูกตั้งค่าเป็นตัวเลือกการแยกวิเคราะห์

การขอ รับ คำสั่งเลิกใช้พี่ รับ(1) ยูทิลิตี้เนื่องจากการจัดการของ
อาร์กิวเมนต์ที่มีช่องว่าง

การขอ รับ builtin อาจใช้เพื่อรับตัวเลือกและข้อโต้แย้งจากรายการของ
พารามิเตอร์ เมื่อถูกเรียก รับ วางค่าของตัวเลือกถัดไปจาก
สตริงตัวเลือกในรายการในตัวแปรเชลล์ที่ระบุโดย คือ และดัชนีของมันใน
ตัวแปรเชลล์ OPTIND เมื่อเชลล์ถูกเรียกใช้ OPTIND จะเริ่มต้นเป็น 1 For
แต่ละตัวเลือกที่ต้องใช้อาร์กิวเมนต์ the รับ builtin จะวางไว้ในเปลือก
ตัวแปร OPTARG หากไม่อนุญาตให้ใช้ตัวเลือกใน เลือกสตริงแล้วออพตาร์กจะ
ไม่ถูกตั้งค่า

เลือกสตริง เป็นสตริงของตัวอักษรตัวเลือกที่รู้จัก (ดู รับ(3)). ถ้าจดหมายคือ
ตามด้วยเครื่องหมายทวิภาค ตัวเลือกที่คาดว่าจะมีอาร์กิวเมนต์ที่อาจหรือไม่ก็ได้
แยกออกจากมันด้วยช่องว่างสีขาว หากไม่พบอักขระตัวเลือกที่
ที่คาดหวัง รับ จะตั้งค่าตัวแปร คือ เป็น “?”; รับ จากนั้นจะยกเลิกการตั้งค่าOPTARG
และเขียนเอาต์พุตไปยังข้อผิดพลาดมาตรฐาน โดยระบุโคลอนเป็นอักขระตัวแรกของ
เลือกสตริง ข้อผิดพลาดทั้งหมดจะถูกละเว้น

ค่าที่ไม่ใช่ศูนย์จะถูกส่งกลับเมื่อถึงตัวเลือกสุดท้าย ถ้าไม่มี
อาร์กิวเมนต์ที่เหลือ รับ จะตั้ง คือ ไปยังตัวเลือกพิเศษ “--” มิฉะนั้น มัน
จะตั้ง คือ ถึง "?".

โค้ดย่อยต่อไปนี้แสดงวิธีประมวลผลอาร์กิวเมนต์สำหรับคำสั่ง
ที่สามารถใช้ตัวเลือก [a] และ [b] และตัวเลือก [c] ซึ่งต้องใช้ an
ข้อโต้แย้ง.

ในขณะที่ getopts abc: f
do
กรณี $f ใน
a | b) ธง=$f;;
ค) carg=$OPTARG;;
\?) ก้อง $USAGE; ทางออก 1;;
ว่า C
ทำ
เปลี่ยน `expr $OPTIND - 1`

รหัสนี้จะยอมรับสิ่งต่อไปนี้เทียบเท่า:

cmd -ไฟล์ acarg ไฟล์
cmd -a -c ไฟล์ arg ไฟล์
cmd -carg -ไฟล์ไฟล์
cmd -a -carg -- ไฟล์ ไฟล์

กัญชา -รถบ้าน คำสั่ง ...
เชลล์รักษาตารางแฮชซึ่งจดจำตำแหน่งของคำสั่ง ไม่มี
ข้อโต้แย้งใด ๆ กัญชา คำสั่งพิมพ์เนื้อหาของตารางนี้
รายการที่ไม่ได้ดูตั้งแต่ครั้งล่าสุด cd คำสั่งมีเครื่องหมาย an
เครื่องหมายดอกจัน; เป็นไปได้ที่รายการเหล่านี้จะไม่ถูกต้อง

ด้วยข้อโต้แย้ง the กัญชา คำสั่งลบคำสั่งที่ระบุออกจากตารางแฮช
(เว้นแต่เป็นหน้าที่) แล้วหาตำแหน่ง กับ -v ตัวเลือก, พิมพ์แฮช
ตำแหน่งของคำสั่งตามที่พบ NS -r ตัวเลือกทำให้เกิดแฮช
คำสั่งให้ลบรายการทั้งหมดในตารางแฮชยกเว้นฟังก์ชัน

รหัสผ่าน [-หจก]
คำสั่ง builtin จะจดจำไดเร็กทอรีปัจจุบันมากกว่าการ recomputing it
แต่ละครั้ง. สิ่งนี้ทำให้เร็วขึ้น อย่างไรก็ตาม หากมีการเปลี่ยนชื่อไดเร็กทอรีปัจจุบัน ตัว
เวอร์ชันในตัวของ รหัสผ่าน จะทำการพิมพ์ชื่อเดิมของไดเร็กทอรีต่อไป NS -P
อ็อพชันทำให้ค่าทางกายภาพของไดเร็กทอรีการทำงานปัจจุบันแสดงขึ้น นั่นคือ
คือ ลิงก์สัญลักษณ์ทั้งหมดได้รับการแก้ไขตามค่าที่เกี่ยวข้อง NS -L ตัวเลือกเปลี่ยน
ออกจากผลกระทบใด ๆ ก่อนหน้านี้ -P ตัวเลือก

อ่าน [-p รวดเร็ว] [-r] ตัวแปร [...]
พร้อมท์จะถูกพิมพ์ถ้า -p มีการระบุตัวเลือกและอินพุตมาตรฐานคือ a
เทอร์มินัล. จากนั้นจะมีการอ่านบรรทัดจากอินพุตมาตรฐาน ขึ้นบรรทัดใหม่ต่อท้ายคือ
ลบออกจากบรรทัดและแยกบรรทัดตามที่อธิบายไว้ในส่วน word
แยกด้านบนและชิ้นส่วนถูกกำหนดให้กับตัวแปรตามลำดับ อย่างน้อยหนึ่ง
ต้องระบุตัวแปร หากมีชิ้นส่วนมากกว่าตัวแปร ให้เหลือ
ชิ้น (พร้อมกับอักขระใน IFS ที่แยกพวกเขา) ถูกกำหนดให้กับ
ตัวแปรสุดท้าย หากมีตัวแปรมากกว่าชิ้น ตัวแปรที่เหลือจะเป็น
กำหนดสตริงว่าง NS อ่าน ในตัวจะบ่งบอกถึงความสำเร็จเว้นแต่ EOF จะเป็น
พบในการป้อนข้อมูล ซึ่งในกรณีนี้ความล้มเหลวจะถูกส่งกลับ

โดยค่าเริ่มต้น เว้นแต่ -r มีการระบุตัวเลือก แบ็กสแลช “\" ทำหน้าที่เป็นตัวหนี
อักขระ ทำให้อักขระต่อไปนี้ได้รับการปฏิบัติตามตัวอักษร ถ้าแบ็กสแลช
ตามด้วยขึ้นบรรทัดใหม่ แบ็กสแลชและบรรทัดใหม่จะถูกลบ

อ่านเท่านั้น พร้อมชื่อ ...

อ่านเท่านั้น -p
ชื่อที่ระบุจะถูกทำเครื่องหมายเป็นแบบอ่านอย่างเดียว เพื่อไม่ให้เป็นชื่อในภายหลัง
แก้ไขหรือยกเลิกการตั้งค่า เชลล์ยอมให้ค่าของตัวแปรถูกตั้งค่าเป็นค่าเดียวกัน
เวลาที่มันถูกทำเครื่องหมายว่าอ่านอย่างเดียวโดยการเขียน

ชื่ออ่านอย่างเดียว=ค่า

ไม่มีอาร์กิวเมนต์ คำสั่งอ่านอย่างเดียวจะแสดงชื่อของตัวแปรแบบอ่านอย่างเดียวทั้งหมด
กับ -p ตัวเลือกที่ระบุเอาต์พุตจะถูกจัดรูปแบบให้เหมาะสมสำหรับ
การใช้งานแบบโต้ตอบ

printf รูป [ข้อโต้แย้ง ...]
printf รูปแบบและพิมพ์อาร์กิวเมนต์หลังจากครั้งแรกภายใต้การควบคุมของ
รูปส่วน รูป เป็นสตริงอักขระที่มีวัตถุสามประเภท:
อักขระธรรมดาซึ่งคัดลอกไปยังเอาต์พุตมาตรฐานอย่างง่าย ๆ อักขระหลีก
ลำดับที่แปลงและคัดลอกไปยังเอาต์พุตมาตรฐานและรูปแบบ
ข้อมูลจำเพาะแต่ละอันทำให้เกิดการพิมพ์ต่อเนื่องกัน อาร์กิวเมนต์.

การขอ ข้อโต้แย้ง หลังจากแรกจะถือว่าเป็นสตริงถ้ารูปแบบที่สอดคล้องกันคือ
ทั้ง b, c or s; มิฉะนั้นจะถูกประเมินเป็นค่าคงที่ C โดยมีดังต่อไปนี้
นามสกุล:

· อนุญาตให้ใช้เครื่องหมายบวกหรือลบนำหน้า
· หากอักขระนำหน้าเป็นเครื่องหมายคำพูดเดี่ยวหรือคู่ ค่าจะเป็น
รหัส ASCII ของอักขระถัดไป

สตริงรูปแบบถูกนำมาใช้ซ้ำบ่อยเท่าที่จำเป็นเพื่อตอบสนอง ข้อโต้แย้ง. ใด
ข้อกำหนดรูปแบบพิเศษจะถูกประเมินด้วยศูนย์หรือสตริงว่าง

ลำดับหลีกอักขระอยู่ในเครื่องหมายแบ็กสแลชตามที่กำหนดไว้ใน ANSI X3.159-1989
(“ANSI C89”) ตัวอักษรและความหมายมีดังนี้:

\a เขียน อักขระ.

\b เขียน อักขระ.

\f เขียน อักขระ.

\n เขียน อักขระ.

\r เขียน อักขระ.

\t เขียน อักขระ.

\v เขียน อักขระ.

\ เขียนอักขระแบ็กสแลช

NUM เขียนอักขระ 8 บิตที่มีค่า ASCII เป็น 1-, 2 หรือ 3 หลัก
เลขฐานแปด NUM.

ข้อมูลจำเพาะของรูปแบบแต่ละข้อได้รับการแนะนำโดยอักขระเปอร์เซ็นต์ (``%'') NS
ส่วนที่เหลือของข้อกำหนดรูปแบบรวมถึงในลำดับต่อไปนี้:

ค่าสถานะต่อไปนี้เป็นศูนย์หรือมากกว่า:

# อักขระ `#' ที่ระบุว่าควรพิมพ์ค่าเป็น an
``รูปแบบอื่น'' สำหรับ b, c, dและ s รูปแบบตัวเลือกนี้ไม่มี
ผล. สำหรับ o รูปแบบ ความแม่นยำของตัวเลขเพิ่มขึ้นเป็น
บังคับให้อักขระตัวแรกของสตริงเอาต์พุตเป็นศูนย์ สำหรับ x
(X) ผลลัพธ์ที่ไม่ใช่ศูนย์จะมีสตริง 0x (0X) อยู่ข้างหน้า
ใช้เพื่อการ e, E, f, gและ G รูปแบบ ผลลัพธ์จะมี a . เสมอ
จุดทศนิยมแม้ว่าจะไม่มีตัวเลขตามจุดนั้นก็ตาม (ปกติ a
จุดทศนิยมจะปรากฏเฉพาะในผลลัพธ์ของรูปแบบเหล่านั้นหากเป็นตัวเลข
ตามจุดทศนิยม) สำหรับ g และ G รูปแบบเลขศูนย์ต่อท้ายคือ
ไม่ถูกลบออกจากผลลัพธ์อย่างที่ควรจะเป็น

- เครื่องหมายลบ `-' ซึ่งระบุ ซ้าย การปรับ ของเอาต์พุตใน
ฟิลด์ที่ระบุ;

+ อักขระ `+' ที่ระบุว่าควรมีเครื่องหมายอยู่เสมอ
ก่อนตัวเลขเมื่อใช้รูปแบบที่มีลายเซ็น

' ช่องว่างระบุว่าควรเว้นว่างไว้ข้างหน้าค่าบวก
ตัวเลขสำหรับรูปแบบที่ลงนาม `+' จะแทนที่ช่องว่างถ้าทั้งคู่เป็น
ใช้แล้ว;

0 อักขระศูนย์ `0' ที่ระบุว่าควรใช้การเติมศูนย์
มากกว่าการเว้นช่องว่าง `-' จะแทนที่ `0' หากใช้ทั้งคู่

ความกว้างของสนาม:
สตริงตัวเลขเสริมที่ระบุ a สนาม ความกว้าง; ถ้าสตริงเอาต์พุตมี
น้อยกว่าความกว้างของฟิลด์ จะมีการเว้นช่องว่างไว้ทางด้านซ้าย (หรือ
ขวาถ้าได้รับตัวบ่งชี้การปรับด้านซ้าย) เพื่อสร้างสนาม
ความกว้าง (โปรดทราบว่าศูนย์นำหน้าคือแฟล็ก แต่ศูนย์ที่ฝังไว้เป็นส่วนหนึ่งของa
ความกว้างของสนาม);

ความแม่นยำ:
ระยะเวลาที่เลือกได้ '.' ตามด้วยสตริงตัวเลขเสริมที่ให้ a
ความแม่นยำ ซึ่งระบุจำนวนหลักที่จะปรากฏหลังจุดทศนิยม
จุดสำหรับ e และ f รูปแบบหรือจำนวนไบต์สูงสุดที่จะพิมพ์จาก
สตริง (b และ s รูปแบบ); หากไม่มีสตริงตัวเลข ความแม่นยำคือ
ถือว่าเป็นศูนย์

รูปแบบ:
อักขระที่ระบุประเภทของรูปแบบที่จะใช้ (หนึ่งใน
diouxXfwEgGbcs).

ความกว้างหรือความแม่นยำของฟิลด์อาจเป็น '*' แทนสตริงตัวเลข ในกรณีนี้และ
อาร์กิวเมนต์ ให้ความกว้างหรือความแม่นยำของฟิลด์

รูปแบบอักขระและความหมายคือ:

ดีโอเอ็กซ์ การขอ อาร์กิวเมนต์ พิมพ์เป็นทศนิยมที่มีลายเซ็น (d หรือ i) ฐานแปดที่ไม่ได้ลงนาม
ทศนิยมไม่มีเครื่องหมาย หรือเลขฐานสิบหกไม่มีเครื่องหมาย (X หรือ x) ตามลำดับ

f การขอ อาร์กิวเมนต์ ถูกพิมพ์ในลักษณะ [-]ddd.ddd โดยที่จำนวน d's
หลังจากจุดทศนิยมเท่ากับข้อกำหนดความแม่นยำของ
การโต้แย้ง. หากขาดความแม่นยำจะได้รับ 6 หลัก ถ้า
ความแม่นยำเป็น 0 อย่างชัดเจน ไม่มีตัวเลขและไม่มีจุดทศนิยมถูกพิมพ์

eE การขอ อาร์กิวเมนต์ ถูกพิมพ์ในลักษณะ [-]d.ddde±dd ที่มีหนึ่งตัว
หลักก่อนจุดทศนิยมและตัวเลขหลังเท่ากับ
ข้อกำหนดที่แม่นยำสำหรับการโต้แย้ง เมื่อขาดความแม่นยำ
มีการผลิตตัวเลข 6 หลัก E ตัวพิมพ์ใหญ่ใช้สำหรับรูปแบบ `E'

gG การขอ อาร์กิวเมนต์ ถูกพิมพ์อย่างมีสไตล์ f หรือตามสไตล์ e (E) แล้วแต่ว่าให้เต็ม
ความแม่นยำในพื้นที่ขั้นต่ำ

b อักขระจากสตริง อาร์กิวเมนต์ ถูกพิมพ์ด้วยแบ็กสแลช-หนี
ลำดับขยาย
รองรับลำดับการยกเว้นแบ็กสแลชเพิ่มเติมต่อไปนี้:

\c เกี่ยวข้องทั่วโลก สาด เพื่อละเว้นอักขระที่เหลืออยู่ในสตริง
ตัวถูกดำเนินการที่ประกอบด้วยตัวถูกดำเนินการ ตัวถูกดำเนินการสตริงที่เหลืออยู่ และตัวถูกดำเนินการใดๆ
อักขระเพิ่มเติมในรูปแบบตัวถูกดำเนินการรูปแบบ

\0NUM เขียนอักขระ 8 บิตที่มีค่า ASCII เป็น 1-, 2- หรือ
เลขฐานแปด 3 หลัก NUM.

c อักขระตัวแรกของ อาร์กิวเมนต์ ถูกพิมพ์

s อักขระจากสตริง อาร์กิวเมนต์ ถูกพิมพ์จนหมดสิ้น
หรือจนกว่าจำนวนไบต์ที่ระบุโดยข้อกำหนดความแม่นยำคือ
ถึง; หากละเว้นความแม่นยำ อักขระทั้งหมดในสตริงจะเป็น
พิมพ์

% พิมพ์ `%'; ไม่มีการใช้อาร์กิวเมนต์

ไม่ว่าในกรณีใด ความกว้างของฟิลด์ที่ไม่มีอยู่จริงหรือขนาดเล็กจะทำให้เกิดการตัดทอนของฟิลด์
การเติมจะเกิดขึ้นก็ต่อเมื่อความกว้างของฟิลด์ที่ระบุเกินความกว้างจริง

ชุด [{ -ตัวเลือก | +ตัวเลือก | -- }] หาเรื่อง ...
การขอ เซ็ต คำสั่งทำหน้าที่สามอย่างที่แตกต่างกัน

ไม่มีอาร์กิวเมนต์ รายการค่าของตัวแปรเชลล์ทั้งหมด

หากกำหนดตัวเลือกไว้ จะตั้งค่าสถานะตัวเลือกที่ระบุ หรือล้างตามที่อธิบายไว้
ในส่วนที่เรียกว่า ข้อโต้แย้ง รายการ กระบวนการผลิต. เป็นกรณีพิเศษ ถ้าตัวเลือกคือ
-o หรือ +o และไม่มีอาร์กิวเมนต์ให้ เชลล์พิมพ์การตั้งค่าทั้งหมดของมัน
ตัวเลือก. หากตัวเลือกคือ -o การตั้งค่าจะถูกพิมพ์ในรูปแบบที่มนุษย์สามารถอ่านได้
หากตัวเลือกคือ +o การตั้งค่าจะถูกพิมพ์ในรูปแบบที่เหมาะสมกับการป้อนค่าใหม่
เชลล์จะมีผลกับการตั้งค่าตัวเลือกเดียวกัน

การใช้คำสั่ง set ครั้งที่สามคือการตั้งค่าของ positional . ของเชลล์
พารามิเตอร์ไปยัง args ที่ระบุ ในการเปลี่ยนพารามิเตอร์ตำแหน่งโดยไม่ต้อง
เปลี่ยนตัวเลือกใด ๆ ใช้ "--" เป็นอาร์กิวเมนต์แรกในการตั้งค่า หากไม่มีอาร์กิวเมนต์
คำสั่ง set จะล้างพารามิเตอร์ตำแหน่งทั้งหมด (เทียบเท่ากับการดำเนินการ
“กะ $#”)

กะ [n]
เลื่อนพารามิเตอร์ตำแหน่ง n ครั้ง NS เปลี่ยน ตั้งค่าของ $1 สู่ความคุ้มค่า
of $2, คุณค่าของ $2 ถึงค่าของ $3เป็นต้น ทำให้ค่าของ .ลดลง $# by
หนึ่ง. ถ้า n มากกว่าจำนวนพารามิเตอร์ตำแหน่ง เปลี่ยน จะออก
ข้อความแสดงข้อผิดพลาด และออกพร้อมสถานะการส่งคืน 2

ทดสอบ การแสดงออก

[ การแสดงออก ]
การขอ ทดสอบ ยูทิลิตีประเมินนิพจน์ และหากประเมินเป็นจริง จะส่งกลับ a
สถานะการออกศูนย์ (จริง) มิฉะนั้นจะส่งกลับ 1 (เท็จ) หากไม่มีการแสดงออก
การทดสอบยังส่งคืน 1 (เท็จ)

ตัวดำเนินการและแฟล็กทั้งหมดเป็นอาร์กิวเมนต์แยกจาก ทดสอบ ประโยชน์

ไพรมารีต่อไปนี้ใช้ในการสร้างนิพจน์:

-b ไฟล์ จริงถ้า ไฟล์ มีอยู่และเป็นไฟล์บล็อกพิเศษ

-c ไฟล์ จริงถ้า ไฟล์ มีอยู่และเป็นไฟล์อักขระพิเศษ

-d ไฟล์ จริงถ้า ไฟล์ มีอยู่และเป็นไดเร็กทอรี

-e ไฟล์ จริงถ้า ไฟล์ มีอยู่ (โดยไม่คำนึงถึงประเภท)

-f ไฟล์ จริงถ้า ไฟล์ มีอยู่และเป็นไฟล์ปกติ

-g ไฟล์ จริงถ้า ไฟล์ มีอยู่และตั้งค่าแฟล็ก ID กลุ่มที่ตั้งค่าไว้

-h ไฟล์ จริงถ้า ไฟล์ มีอยู่และเป็นลิงค์สัญลักษณ์

-k ไฟล์ จริงถ้า ไฟล์ มีอยู่และมีการตั้งค่าบิตเหนียว

-n เชือก จริงถ้าความยาวของ เชือก ไม่เป็นศูนย์

-p ไฟล์ จริงถ้า ไฟล์ เป็นชื่อไปป์ (FIFO)

-r ไฟล์ จริงถ้า ไฟล์ มีอยู่และสามารถอ่านได้

-s ไฟล์ จริงถ้า ไฟล์ มีอยู่และมีขนาดที่มากกว่าศูนย์

-t file_descriptor
เป็นจริงถ้าไฟล์ที่มีหมายเลขตัวอธิบายไฟล์เป็น file_descriptor is
เปิดและเชื่อมโยงกับเทอร์มินัล

-u ไฟล์ จริงถ้า ไฟล์ มีอยู่และตั้งค่าสถานะ ID ผู้ใช้ที่กำหนดไว้

-w ไฟล์ จริงถ้า ไฟล์ มีอยู่และสามารถเขียนได้ จริงบ่งบอกเพียงว่า
ตั้งค่าสถานะการเขียนอยู่ ไฟล์นี้ไม่สามารถเขียนได้บนระบบไฟล์แบบอ่านอย่างเดียว
แม้ว่าการทดสอบนี้บ่งชี้ว่าเป็นจริง

-x ไฟล์ จริงถ้า ไฟล์ มีอยู่และดำเนินการได้ จริงบ่งบอกเพียงว่า
แฟล็กดำเนินการเปิดอยู่ ถ้า ไฟล์ เป็นไดเร็กทอรี true แสดงว่า ไฟล์
สามารถค้นหาได้

-z เชือก จริงถ้าความยาวของ เชือก เป็นศูนย์

-L ไฟล์ จริงถ้า ไฟล์ มีอยู่และเป็นลิงค์สัญลักษณ์ โอเปอเรเตอร์นี้ยังคงอยู่
เพื่อความเข้ากันได้กับเวอร์ชันก่อนหน้าของโปรแกรมนี้ ไม่ต้องพึ่ง
เกี่ยวกับการดำรงอยู่ของมัน; ใช้ -h แทน.

-O ไฟล์ จริงถ้า ไฟล์ มีอยู่และเจ้าของตรงกับ ID ผู้ใช้ที่มีประสิทธิภาพของสิ่งนี้
กระบวนการ

-G ไฟล์ จริงถ้า ไฟล์ มีอยู่และกลุ่มของมันตรงกับรหัสกลุ่มที่มีประสิทธิภาพของ
กระบวนการนี้

-S ไฟล์ จริงถ้า ไฟล์ มีอยู่และเป็นซ็อกเก็ต

file1 -nt file2
จริงถ้า file1 และ file2 มีอยู่และ file1 ใหม่กว่า file2.

file1 -อต file2
จริงถ้า file1 และ file2 มีอยู่และ file1 มีอายุมากกว่า file2.

file1 -เอฟ file2
จริงถ้า file1 และ file2 มีอยู่และอ้างถึงไฟล์เดียวกัน

เชือก จริงถ้า เชือก ไม่ใช่สตริงว่าง

s1 = s2 จริงถ้าสตริง s1 และ s2 เหมือนกัน

s1 != s2 จริงถ้าสตริง s1 และ s2 ไม่เหมือนกัน

s1 < s2 จริงถ้าสตริง s1 มาก่อน s2 ขึ้นอยู่กับค่า ASCII ของพวกเขา
อักขระ

s1 > s2 จริงถ้าสตริง s1 มาหลังจาก s2 ขึ้นอยู่กับค่า ASCII ของพวกเขา
อักขระ

n1 -เช่น n2 จริงถ้าจำนวนเต็ม n1 และ n2 มีค่าเท่ากันทางพีชคณิต

n1 - หนึ่ง n2 จริงถ้าจำนวนเต็ม n1 และ n2 ไม่เท่ากันทางพีชคณิต

n1 -gt n2 จริงถ้าจำนวนเต็ม n1 เป็นพีชคณิตมากกว่าจำนวนเต็ม n2.

n1 -ge n2 จริงถ้าจำนวนเต็ม n1 พีชคณิตมากกว่าหรือเท่ากับ
จำนวนเต็ม n2.

n1 -ล n2 จริงถ้าจำนวนเต็ม n1 เป็นพีชคณิตน้อยกว่าจำนวนเต็ม n2.

n1 -NS n2 จริงถ้าจำนวนเต็ม n1 พีชคณิตน้อยกว่าหรือเท่ากับ
จำนวนเต็ม n2.

ไพรมารีเหล่านี้สามารถใช้ร่วมกับโอเปอเรเตอร์ต่อไปนี้:

! การแสดงออก จริงถ้า การแสดงออก เป็นเท็จ

การแสดงออก1 -a การแสดงออก2
จริงถ้าทั้งคู่ การแสดงออก1 และ การแสดงออก2 เป็นเรื่องจริง

การแสดงออก1 -o การแสดงออก2
จริงถ้าอย่างใดอย่างหนึ่ง การแสดงออก1 or การแสดงออก2 เป็นเรื่องจริง

(การแสดงออก) จริง ถ้านิพจน์เป็นจริง

การขอ -a โอเปอเรเตอร์มีลำดับความสำคัญสูงกว่า -o ผู้ประกอบการ

ครั้ง พิมพ์ผู้ใช้ที่สะสมและเวลาของระบบสำหรับเชลล์และสำหรับกระบวนการที่รันจาก
เปลือก สถานะการส่งคืนคือ 0

กับดัก [การกระทำ สัญญาณ ...]
ทำให้เชลล์แยกวิเคราะห์และดำเนินการเมื่อสัญญาณใด ๆ ที่ระบุเป็น
ได้รับ. สัญญาณจะถูกกำหนดโดยหมายเลขสัญญาณหรือเป็นชื่อของสัญญาณ
If สัญญาณ คือ 0 หรือ EXIT การดำเนินการจะดำเนินการเมื่อเชลล์ออก การกระทำ อาจจะ
ว่างเปล่า ('') ซึ่งทำให้สัญญาณที่ระบุถูกละเว้น กับ การกระทำ ละเว้นหรือ
ตั้งค่าเป็น `-' สัญญาณที่ระบุถูกกำหนดเป็นการกระทำเริ่มต้น เมื่อเปลือก
แยก subshell มันจะรีเซ็ตสัญญาณที่ติดอยู่ (แต่ไม่ถูกละเว้น) เป็นค่าเริ่มต้น
การกระทำ. NS กับดัก คำสั่งไม่มีผลกับสัญญาณที่ถูกละเลยในการเข้าสู่
เปลือก. กับดัก โดยไม่มีข้อโต้แย้งใด ๆ ทำให้มันเขียนรายการสัญญาณและ
การดำเนินการที่เกี่ยวข้องกับเอาต์พุตมาตรฐานในรูปแบบที่เหมาะสมกับอินพุตของ
เปลือกที่บรรลุผลการดักจับแบบเดียวกัน

ตัวอย่าง:

กับดัก

แสดงรายการสัญญาณที่ติดอยู่และการกระทำที่เกี่ยวข้อง

กับดัก '' INT QUIT tstp 30

ละเว้นสัญญาณ INT QUIT TSTP USR1

กับดักวันที่INT

พิมพ์วันที่เมื่อรับสัญญาณINT

พิมพ์ [พร้อมชื่อ ...]
ตีความแต่ละชื่อเป็นคำสั่งและพิมพ์ความละเอียดของการค้นหาคำสั่ง
ความละเอียดที่เป็นไปได้คือ: เชลล์คีย์เวิร์ด, นามแฝง, เชลล์บิวด์อิน, คำสั่ง, นามแฝงที่ติดตาม
และไม่พบ สำหรับนามแฝง การขยายนามแฝงจะถูกพิมพ์ สำหรับคำสั่งและติดตาม
พิมพ์นามแฝงชื่อพาธที่สมบูรณ์ของคำสั่ง

อูลิมิต [-H | -S] [-a | -tfdscmlpn [ความคุ้มค่า]]
สอบถามหรือตั้งค่าขีดจำกัดฮาร์ดหรือซอฟต์ในกระบวนการหรือกำหนดขีดจำกัดใหม่ NS
ทางเลือกระหว่างฮาร์ดลิมิต (ซึ่งไม่มีกระบวนการใดที่ได้รับอนุญาตให้ละเมิด และที่อาจไม่
จะเพิ่มขึ้นเมื่อถูกลดระดับลง) และ soft limit (ซึ่งทำให้กระบวนการเป็น
ส่งสัญญาณแต่ไม่จ าเป็นต้องตาย และยกขึ้นได้) ทำด้วยสิ่งเหล่านี้
ธง:

-H ตั้งหรือสอบถามฮาร์ดลิมิต

-S ตั้งหรือสอบถามข้อ จำกัด อ่อน ถ้าไม่ใช่ -H ไม่ -S ระบุไว้
ขีดจำกัดซอฟต์จะแสดงขึ้นหรือตั้งค่าขีดจำกัดทั้งสองไว้ หากระบุทั้งสองอย่าง
คนสุดท้ายชนะ

ขีด จำกัด ที่จะสอบปากคำหรือกำหนดจึงเลือกโดยระบุข้อใดข้อหนึ่งต่อไปนี้
ธง:

-a แสดงขีดจำกัดปัจจุบันทั้งหมด

-t แสดงหรือตั้งค่าขีด จำกัด ของเวลา CPU (เป็นวินาที)

-f แสดงหรือกำหนดขีด จำกัด ของไฟล์ที่ใหญ่ที่สุดที่สามารถสร้างได้ (in
512 ไบต์บล็อก)

-d แสดงหรือกำหนดขีดจำกัดของขนาดเซ็กเมนต์ข้อมูลของกระบวนการ (in
กิโลไบต์)

-s แสดงหรือกำหนดขีดจำกัดของขนาดสแต็กของกระบวนการ (เป็นกิโลไบต์)

-c แสดงหรือกำหนดขีดจำกัดของขนาดดัมพ์แกนที่ใหญ่ที่สุดที่สามารถผลิตได้
(ในบล็อกขนาด 512 ไบต์)

-m แสดงหรือกำหนดขีดจำกัดของหน่วยความจำกายภาพทั้งหมดที่สามารถใช้งานได้โดย
กระบวนการ (เป็นกิโลไบต์)

-l แสดงหรือกำหนดขีด จำกัด จำนวนหน่วยความจำที่กระบวนการสามารถล็อคด้วย มล็อค(2)
(เป็นกิโลไบต์)

-p แสดงหรือกำหนดขีดจำกัดจำนวนกระบวนการที่ผู้ใช้รายนี้สามารถมีได้ที่
ครั้งหนึ่ง

-n แสดงหรือกำหนดขีด จำกัด ของไฟล์ตัวเลขที่กระบวนการสามารถเปิดได้ในครั้งเดียว

-r แสดงหรือตั้งค่าขีด จำกัด ในลำดับความสำคัญการจัดกำหนดการตามเวลาจริงของกระบวนการ

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

ขีด จำกัด ของกระบวนการโดยพลการสามารถแสดงหรือตั้งค่าโดยใช้ sysctl(8) ยูทิลิตี้

อูมาสก์ [หน้ากาก]
ตั้งค่าของ umask (ดู อูมาสก์(2)) ถึงค่าฐานแปดที่ระบุ ถ้าข้อโต้แย้ง
ถูกละไว้ ค่า umask จะถูกพิมพ์

นามแฝง [-a] [พร้อมชื่อ]
If พร้อมชื่อ ระบุไว้ เชลล์จะลบนามแฝงนั้นออก ถ้า -a ถูกระบุ นามแฝงทั้งหมด
จะถูกลบออก

ยกเลิกการตั้งค่า [-fv] พร้อมชื่อ ...
ตัวแปรและฟังก์ชันที่ระบุไม่ได้ตั้งค่าและไม่ได้ส่งออก ถ้า -f or -v is
ระบุ ฟังก์ชันหรือตัวแปรที่เกี่ยวข้องจะไม่ถูกตั้งค่า ตามลำดับ ถ้าให้
ชื่อสอดคล้องกับทั้งตัวแปรและฟังก์ชันและไม่ได้ระบุตัวเลือกเท่านั้น
ไม่ได้ตั้งค่าตัวแปร

รอ [งาน]
รอให้งานที่ระบุเสร็จสิ้นและส่งคืนสถานะการออกของกระบวนการล่าสุด
ในงาน หากละเว้นอาร์กิวเมนต์ ให้รอให้งานทั้งหมดเสร็จสิ้นและส่งคืน an
สถานะออกจากศูนย์

คำสั่ง Line การตัดต่อ
เมื่อ สาด กำลังใช้งานแบบโต้ตอบจากเทอร์มินัล คำสั่งปัจจุบัน และคำสั่ง
ประวัติศาสตร์ (ดู fc in บิลท์อิน) สามารถแก้ไขได้โดยใช้การแก้ไขบรรทัดคำสั่งโหมด vi โหมดนี้
ใช้คำสั่งที่อธิบายไว้ด้านล่างซึ่งคล้ายกับชุดย่อยของคำสั่งที่อธิบายไว้ในหน้าคู่มือ vi
คำสั่ง 'set -o vi' ช่วยให้สามารถแก้ไขโหมด vi และวาง sh ลงในโหมดแทรก vi ด้วย vi-
เปิดใช้งานโหมด sh สามารถสลับระหว่างโหมดแทรกและโหมดคำสั่ง บรรณาธิการไม่ใช่
อธิบายไว้เต็มที่นี่ แต่จะอยู่ในเอกสารในภายหลัง คล้ายกับ vi: พิมพ์ ⟨ESC⟩
จะโยนคุณเข้าสู่โหมดคำสั่งคำสั่ง VI กดปุ่ม ⟨return⟩ ในขณะที่อยู่ในโหมดคำสั่ง will
ส่งสายไปที่เปลือก

EXIT สถานภาพ


ข้อผิดพลาดที่ตรวจพบโดยเชลล์ เช่น ข้อผิดพลาดทางไวยากรณ์ จะทำให้เชลล์ออกจากการทำงาน
ด้วยสถานะการออกที่ไม่ใช่ศูนย์ หากเชลล์ไม่ใช่เชลล์แบบโต้ตอบ การดำเนินการของ
ไฟล์เชลล์จะถูกยกเลิก มิฉะนั้นเชลล์จะส่งคืนสถานะการออกของ Last
ดำเนินการคำสั่งหรือถ้าใช้ exit builtin กับอาร์กิวเมนต์ตัวเลขจะส่งคืน
ข้อโต้แย้ง.

และพวกเรา


HOME ตั้งค่าอัตโนมัติโดย เข้าสู่ระบบ(1) จากไดเรกทอรีเข้าสู่ระบบของผู้ใช้ในรหัสผ่าน
ไฟล์ (passwd(4)). ตัวแปรสภาพแวดล้อมนี้ยังทำหน้าที่เป็นค่าเริ่มต้น
อาร์กิวเมนต์สำหรับซีดีบิวด์อิน

PATH พาธการค้นหาเริ่มต้นสำหรับไฟล์เรียกทำงาน ดูส่วนด้านบน เส้นทาง ค้นหา.

CDPATH พาธการค้นหาที่ใช้กับซีดีบิวด์อิน

MAIL ชื่อของไฟล์เมลที่จะตรวจสอบการมาถึงของเมลใหม่
แทนที่โดย MAILPATH

MAILCHECK ความถี่เป็นวินาทีที่เชลล์ตรวจสอบการมาถึงของเมลใน
ไฟล์ที่ระบุโดย MAILPATH หรือไฟล์ MAIL หากตั้งค่าเป็น 0 เช็คจะ
เกิดขึ้นในแต่ละพรอมต์

MAILPATH เครื่องหมายทวิภาค “:” คั่นรายการชื่อไฟล์ เพื่อให้เชลล์ตรวจสอบขาเข้า
จดหมาย การตั้งค่าสภาพแวดล้อมนี้จะแทนที่การตั้งค่า MAIL มีสูงสุด
จาก 10 กล่องจดหมายที่สามารถตรวจสอบได้ในครั้งเดียว

PS1 สตริงพรอมต์หลักซึ่งมีค่าเริ่มต้นเป็น “$ ” เว้นแต่คุณจะเป็นผู้ใช้ระดับสูง
ในกรณีนี้จะมีค่าเริ่มต้นเป็น “# ”

PS2 สตริงพร้อมต์รอง ซึ่งมีค่าเริ่มต้นเป็น “> ”

เอาต์พุต PS4 ก่อนแต่ละบรรทัดเมื่อเปิดใช้งานการติดตามการดำเนินการ (set -x) ค่าเริ่มต้นเป็น
“+ ”

IFS ตัวแยกฟิลด์อินพุต โดยปกติจะถูกตั้งค่าเป็น ⟨space⟩, ⟨tab⟩ และ ⟨newline⟩
ดู สีขาว ช่องว่าง รุนแรง สำหรับรายละเอียดเพิ่มเติม

TERM การตั้งค่าเทอร์มินัลเริ่มต้นสำหรับเชลล์ เป็นมรดกตกทอดมาจากลูกหลานของ
เชลล์ และใช้ในโหมดแก้ไขประวัติ

HISTSIZE จำนวนบรรทัดในบัฟเฟอร์ประวัติสำหรับเชลล์

PWD ค่าตรรกะของไดเร็กทอรีการทำงานปัจจุบัน นี้ถูกกำหนดโดย cd
คำสั่ง

OLDPWD ค่าตรรกะก่อนหน้าของไดเร็กทอรีการทำงานปัจจุบัน นี้ถูกกำหนดโดย
cd คำสั่ง

PPID ID โปรเซสของโปรเซสพาเรนต์ของเชลล์

ใช้ sh ออนไลน์โดยใช้บริการ onworks.net



โปรแกรมออนไลน์ Linux และ Windows ล่าสุด