 
นี่คือคำสั่ง shposix ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
sh — เชลล์ ตัวแปลภาษาคำสั่งมาตรฐาน
เรื่องย่อ
sh [−abเซฟิมนูฟx] [-o ตัวเลือก]... [+abCefhimnuvx] [+o ตัวเลือก]...
[command_file [อาร์กิวเมนต์...]]
ช −ค [−abเซฟิมนูฟx] [-o ตัวเลือก]... [+abCefhimnuvx] [+o ตัวเลือก]...
command_string [command_name [อาร์กิวเมนต์...]]
sh -s [−abเซฟิมนูฟx] [-o ตัวเลือก]... [+abCefhimnuvx] [+o ตัวเลือก]...
[อาร์กิวเมนต์...]
DESCRIPTION
การขอ sh ยูทิลิตี้เป็นล่ามภาษาคำสั่งที่จะรันคำสั่งที่อ่านจาก
สตริงบรรทัดคำสั่ง อินพุตมาตรฐาน หรือไฟล์ที่ระบุ ใบสมัครจะต้องรับรอง
ว่าคำสั่งที่จะดำเนินการจะแสดงในภาษาที่อธิบายไว้ใน บท 2,
เปลือก คำสั่ง ภาษาที่ใช้.
การขยายชื่อพาธจะต้องไม่ล้มเหลวเนื่องจากขนาดของไฟล์
การเปลี่ยนเส้นทางอินพุตและเอาต์พุตของเชลล์มีค่าออฟเซ็ตสูงสุดที่กำหนดการใช้งานซึ่งคือ
กำหนดไว้ในคำอธิบายไฟล์ที่เปิดอยู่
OPTIONS
การขอ sh ยูทิลิตี้จะต้องสอดคล้องกับปริมาณคำจำกัดความพื้นฐานของ POSIX.1-2008 Section 12.2,
ประโยชน์ วากยสัมพันธ์ แนวทางพร้อมต่อยอดรองรับผู้นำ ('+') เช่น
ระบุไว้ด้านล่าง
การขอ -ก, -ข, -ค, -อี, -ฉ, -ม, -น, -o ตัวเลือก, -คุณ, -vและ -x ตัวเลือกต่างๆ ได้อธิบายไว้เป็นส่วนหนึ่งของ
เซ็ต ยูทิลิตี้ใน Section 2.14, พิเศษ Built-In ปุ่ม อเนกประสงค์. ตัวอักษรตัวเลือกที่ได้รับ
จาก เซ็ต ในตัวพิเศษจะต้องได้รับการยอมรับด้วย .ชั้นนำ ('+')
แทนที่จะเป็นผู้นำ (หมายถึงตัวพิมพ์ย้อนกลับของตัวเลือกตามที่อธิบายไว้ในนี้
ปริมาณของ POSIX.1-2008)
รองรับตัวเลือกเพิ่มเติมต่อไปนี้:
-ค อ่านคำสั่งจาก command_string ตัวถูกดำเนินการ ตั้งค่าพิเศษ
พารามิเตอร์ 0 (ดู Section 2.5.2, พิเศษ พารามิเตอร์) จากค่าของ
command_name ตัวถูกดำเนินการและพารามิเตอร์ตำแหน่ง ($ 1, $2 และอื่น ๆ ) ใน
ลำดับจากส่วนที่เหลือ อาร์กิวเมนต์ ตัวถูกดำเนินการ ห้ามอ่านคำสั่งใดๆ จาก
อินพุตมาตรฐาน
-ฉัน ระบุว่าเปลือกเป็น การโต้ตอบ; ดูด้านล่าง การดำเนินการอาจรักษา
ระบุ -ฉัน ตัวเลือกเป็นข้อผิดพลาดหาก ID ผู้ใช้จริงของกระบวนการโทร
ไม่เท่ากับ ID ผู้ใช้ที่มีประสิทธิภาพ หรือหาก ID กลุ่มจริงไม่เท่ากับ
ID กลุ่มที่มีประสิทธิภาพ
-s อ่านคำสั่งจากอินพุตมาตรฐาน
หากไม่มีตัวถูกดำเนินการและ -ค ไม่ได้ระบุตัวเลือก the -s ตัวเลือกจะเป็น
สันนิษฐาน
ถ้า -ฉัน มีตัวเลือกอยู่ หรือหากไม่มีตัวถูกดำเนินการและอินพุตมาตรฐานของเชลล์
และข้อผิดพลาดมาตรฐานแนบกับเทอร์มินัล เชลล์ถือว่าเป็น การโต้ตอบ.
ตัวดำเนินการ
ตัวถูกดำเนินการดังต่อไปนี้จะได้รับการสนับสนุน:
− โสด จะถือว่าเป็นตัวถูกดำเนินการแรกแล้วละเว้น ถ้า
ทั้งสอง '-' และ "-−" ถูกกำหนดเป็นอาร์กิวเมนต์ หรือถ้าตัวถูกดำเนินการอื่นๆ นำหน้า
เดี่ยว ผลลัพธ์ไม่ได้กำหนดไว้
อาร์กิวเมนต์ พารามิเตอร์ตำแหน่ง ($$1, $2, และอื่นๆ) จะถูกตั้งค่าเป็น ข้อโต้แย้ง, ถ้ามี.
command_file
ชื่อพาธของไฟล์ที่มีคำสั่ง หากชื่อพาธมีตั้งแต่หนึ่งชื่อขึ้นไป
อักขระ การใช้งานพยายามอ่านไฟล์นั้น ไฟล์ที่ต้องการ
ไม่สามารถดำเนินการได้ หากชื่อพาธไม่มี a อักขระ:
* การใช้งานจะพยายามอ่านไฟล์นั้นจากการทำงานปัจจุบัน
ไดเรกทอรี; ไฟล์นี้ไม่จำเป็นต้องสามารถเรียกใช้งานได้
* หากไฟล์ไม่อยู่ในไดเร็กทอรีการทำงานปัจจุบัน การใช้งานอาจ
ทำการค้นหาไฟล์ปฏิบัติการโดยใช้ค่าของ เส้นทางเป็น
อธิบายไว้ใน Section 2.9.1.1, คำสั่ง ค้นหา และ การกระทำ.
พารามิเตอร์พิเศษ 0 (ดู Section 2.5.2, พิเศษ พารามิเตอร์) จะถูกตั้งค่าเป็น
ค่าของ command_file. ถ้า sh เรียกโดยใช้รูปแบบเรื่องย่อว่าละเว้น
command_fileพารามิเตอร์พิเศษ 0 จะต้องตั้งค่าเป็นค่าแรก
อาร์กิวเมนต์ส่งผ่านไปยัง sh จากผู้ปกครอง (เช่น หาเรื่อง[0] สำหรับโปรแกรม C)
ซึ่งปกติจะเป็นชื่อพาธที่ใช้ในการรัน sh ประโยชน์
command_name
สตริงที่กำหนดให้กับพารามิเตอร์พิเศษ 0 เมื่อดำเนินการคำสั่งใน
command_string. ถ้า command_name ไม่ได้ระบุ พารามิเตอร์พิเศษ 0 จะเป็น
ตั้งค่าเป็นค่าของอาร์กิวเมนต์แรกที่ส่งผ่านไปยัง sh จากผู้ปกครอง (for
ตัวอย่าง, หาเรื่อง[0] สำหรับโปรแกรม C) ซึ่งปกติจะเป็นชื่อพาธที่ใช้ในการดำเนินการ
sh ประโยชน์
command_string
สตริงที่จะตีความโดยเชลล์เป็นหนึ่งคำสั่งขึ้นไป ราวกับว่า
สตริงเป็นอาร์กิวเมนต์ของ ระบบ() ฟังก์ชันที่กำหนดไว้ในระบบ
ปริมาณอินเทอร์เฟซของ POSIX.1-2008 ถ้า command_string ตัวถูกดำเนินการว่างเปล่า
สตริง sh จะออกโดยมีสถานะเป็นศูนย์
STDIN
อินพุตมาตรฐานจะใช้ได้ก็ต่อเมื่อข้อใดข้อหนึ่งต่อไปนี้เป็นจริง:
* ความ -s มีการระบุตัวเลือก
* ความ -ค ไม่ได้ระบุตัวเลือกและไม่ได้ระบุตัวถูกดำเนินการ
* สคริปต์รันคำสั่งอย่างน้อยหนึ่งคำสั่งที่ต้องการอินพุตจากอินพุตมาตรฐาน (เช่น
เป็น อ่าน คำสั่งที่ไม่เปลี่ยนเส้นทางอินพุต)
ดูส่วนไฟล์อินพุต
เมื่อเชลล์ใช้อินพุตมาตรฐานและเรียกใช้คำสั่งที่ใช้ standard . ด้วย
อินพุตเปลือกจะต้องให้แน่ใจว่าตัวชี้ไฟล์อินพุตมาตรฐานชี้โดยตรงหลังจาก
คำสั่งที่ได้อ่านเมื่อคำสั่งเริ่มดำเนินการ จะไม่อ่านล่วงหน้าในเช่น
ลักษณะที่อักขระใด ๆ ที่ตั้งใจให้อ่านโดยคำสั่งที่เรียกใช้นั้นถูกใช้โดย
เชลล์ (ไม่ว่าจะแปลโดยเชลล์หรือไม่ก็ตาม) หรืออักขระที่ไม่ได้อ่าน
โดยคำสั่งที่เรียกใช้จะไม่เห็นเชลล์ เมื่อคำสั่งที่คาดว่าจะอ่าน
อินพุตมาตรฐานเริ่มต้นแบบอะซิงโครนัสโดยเชลล์แบบโต้ตอบ ซึ่งไม่ได้ระบุ
ไม่ว่าอักขระจะถูกอ่านโดยคำสั่งหรือแปลโดยเชลล์
หากอินพุตมาตรฐานเป็น sh เป็น FIFO หรืออุปกรณ์ปลายทางและถูกตั้งค่าเป็นการอ่านแบบไม่บล็อก
แล้วก็ sh จะเปิดใช้งานการบล็อกการอ่านบนอินพุตมาตรฐาน ทั้งนี้ให้มีผลบังคับเมื่อ
คำสั่งเสร็จสมบูรณ์
INPUT ไฟล์
ไฟล์อินพุตจะเป็นไฟล์ข้อความ ยกเว้นความยาวบรรทัดนั้นไม่จำกัด ถ้า
ไฟล์อินพุตว่างเปล่าหรือประกอบด้วยบรรทัดว่างหรือความคิดเห็นเท่านั้น หรือทั้งสองอย่าง sh จะออก
ด้วยสถานะการออกเป็นศูนย์
และพวกเรา ตัวแปร
ตัวแปรสภาพแวดล้อมต่อไปนี้จะส่งผลต่อการดำเนินการของ sh:
ENV ตัวแปรนี้ เมื่อใดและเฉพาะเมื่อมีการเรียกใช้เชลล์แบบโต้ตอบ จะเป็น
ภายใต้การขยายพารามิเตอร์ (ดู Section 2.6.2, พารามิเตอร์ การขยายตัว) โดย
เชลล์และค่าผลลัพธ์จะถูกใช้เป็นชื่อพาธของไฟล์ที่มี
คำสั่งเชลล์เพื่อดำเนินการในสภาพแวดล้อมปัจจุบัน ไฟล์ไม่จำเป็นต้องเป็น
ปฏิบัติการได้ ถ้าค่าขยายของ ENV ไม่ใช่ชื่อพาธสัมบูรณ์, the
ผลลัพธ์ไม่ระบุ ENV จะถูกละเว้นหากผู้ใช้จริงและมีประสิทธิภาพ
ID หรือ ID กลุ่มจริงและมีประสิทธิภาพของกระบวนการนั้นแตกต่างกัน
เอฟซีดิท ตัวแปรนี้ เมื่อขยายโดยเชลล์ จะต้องกำหนดค่าเริ่มต้นสำหรับ
-อี บรรณาธิการ ตัวเลือก บรรณาธิการ ตัวเลือกอาร์กิวเมนต์ ถ้า เอฟซีดิท เป็นโมฆะหรือไม่ได้ตั้งค่า ed
จะใช้เป็นบรรณาธิการ
ฮิสไฟล์ กำหนดชื่อพาธที่ตั้งชื่อไฟล์ประวัติคำสั่ง ถ้า ฮิสไฟล์ ตัวแปร is
ไม่ได้ตั้งค่า เชลล์อาจพยายามเข้าถึงหรือสร้างไฟล์ .sh_history ที่
ไดเร็กทอรีที่อ้างถึงโดย หน้าหลัก ตัวแปรสภาพแวดล้อม ถ้าเปลือกทำไม่ได้
ได้รับทั้งการเข้าถึงแบบอ่านและเขียน หรือสร้างไฟล์ประวัติ จะใช้
กลไกที่ไม่ระบุรายละเอียดที่ช่วยให้ประวัติทำงานได้อย่างถูกต้อง
(การอ้างอิงถึงประวัติ ``ไฟล์'' ในส่วนนี้จะเข้าใจว่าหมายถึงสิ่งนี้
กลไกที่ไม่ระบุในกรณีดังกล่าว) การใช้งานอาจเลือกที่จะเข้าถึง
ตัวแปรนี้เฉพาะเมื่อเริ่มต้นไฟล์ประวัติ การเริ่มต้นนี้จะ
เกิดขึ้นเมื่อ fc or sh ความพยายามครั้งแรกในการดึงรายการจากหรือเพิ่มรายการไปที่
ไฟล์ซึ่งเป็นผลมาจากคำสั่งที่ออกโดยผู้ใช้ ไฟล์ที่ตั้งชื่อโดย
ENV ตัวแปรหรือไฟล์เริ่มต้นระบบที่กำหนดการใช้งาน การดำเนินการ
อาจเลือกปิดการใช้งานกลไกรายการประวัติสำหรับผู้ใช้ตามความเหมาะสม
สิทธิพิเศษที่ไม่ได้กำหนด ฮิสไฟล์; สถานการณ์เฉพาะภายใต้สิ่งนี้
เกิดขึ้นมีการกำหนดการใช้งาน หากเชลล์มากกว่าหนึ่งอินสแตนซ์คือ
ใช้ไฟล์ประวัติเดียวกัน ไม่ได้ระบุว่าจะอัปเดตไฟล์ประวัติอย่างไร
จากเปลือกเหล่านั้นโต้ตอบ เนื่องจากรายการจะถูกลบออกจากไฟล์ประวัติ พวกเขา
จะถูกลบที่เก่าที่สุดก่อน ไม่ระบุเมื่อรายการไฟล์ประวัติเป็น
ถูกลบออกจากไฟล์ประวัติ
ฮิสต์ไซส์ กำหนดจำนวนทศนิยมแทนขีด จำกัด ของจำนวนก่อนหน้า
คำสั่งที่สามารถเข้าถึงได้ หากไม่ได้ตั้งค่าตัวแปรนี้ ค่าดีฟอลต์ที่ไม่ได้ระบุ
มากกว่าหรือเท่ากับ 128 ให้ใช้ จำนวนคำสั่งสูงสุดใน
รายการประวัติไม่ระบุ แต่อย่างน้อย 128 การดำเนินการ
อาจเลือกที่จะเข้าถึงตัวแปรนี้เฉพาะเมื่อเริ่มต้นไฟล์ประวัติเช่น
อธิบายไว้ภายใต้ ฮิสไฟล์. ดังนั้นจึงไม่สามารถระบุได้ว่ามีการเปลี่ยนแปลงหรือไม่
ฮิสต์ไซส์ หลังจากที่ไฟล์ประวัติได้รับการเตรียมใช้งานแล้วจะมีผล
หน้าหลัก กำหนดชื่อพาธของโฮมไดเร็กทอรีของผู้ใช้ เนื้อหาของ หน้าหลัก เป็น
ใช้ในการขยายตัวของตัวหนอนตามที่อธิบายไว้ใน Section 2.6.1, ตัวหนอน การขยายตัว.
ไอเอฟเอ สตริงที่ถือว่าเป็นรายการของอักขระที่ใช้สำหรับการแยกฟิลด์และ to
แบ่งบรรทัดเป็นฟิลด์ด้วย อ่าน คำสั่ง
If ไอเอฟเอ ไม่ได้ตั้งค่า ให้ทำงานตามปกติสำหรับตัวแปรที่ไม่ได้ตั้งค่า เว้นแต่
การแบ่งเขตโดยเปลือกและเส้นแบ่งโดย อ่าน คำสั่งจะเป็น
ดำเนินการราวกับว่าค่าของ ไอเอฟเอ เป็น ; ดู Section 2.6.5,
สนาม รุนแรง.
การดำเนินการอาจละเว้นค่าของ ไอเอฟเอ ในสภาพแวดล้อมหรือขาดหายไป
of ไอเอฟเอ จากสภาพแวดล้อมในขณะที่เรียกใช้เชลล์ซึ่งในกรณีนี้
เปลือกจะตั้ง ไอเอฟเอ ถึง เมื่อมันถูกเรียก
ภาษา ระบุค่าเริ่มต้นสำหรับตัวแปรการทำให้เป็นสากลที่ไม่ได้ตั้งค่าหรือ
โมฆะ. (ดูปริมาณคำจำกัดความพื้นฐานของ POSIX.1-2008 Section 8.2,
สากล ตัวแปร เพื่อความเหนือกว่าของความเป็นสากล
ตัวแปรที่ใช้ในการกำหนดค่าของหมวดหมู่สถานที่)
LC_ALL หากตั้งค่าเป็นค่าสตริงที่ไม่ว่าง ให้แทนที่ค่าของค่าอื่นๆ ทั้งหมด
ตัวแปรความเป็นสากล
LC_COLLATE
กำหนดพฤติกรรมของนิพจน์ช่วง คลาสสมมูล และ
องค์ประกอบการเรียงอักขระภายในการจับคู่รูปแบบ
LC_CTYPE กำหนดสถานที่สำหรับการตีความลำดับไบต์ของข้อมูลข้อความ
เป็นอักขระ (เช่น ไบต์เดี่ยวเมื่อเทียบกับอักขระหลายไบต์ใน
อาร์กิวเมนต์และไฟล์อินพุต) ซึ่งอักขระที่กำหนดเป็นตัวอักษร (character
ชั้น แอลฟา) และพฤติกรรมของคลาสอักขระภายในการจับคู่รูปแบบ
LC_MESSAGES
กำหนดโลแคลที่ควรใช้เพื่อส่งผลต่อรูปแบบและเนื้อหาของ
ข้อความวินิจฉัยที่เขียนถึงข้อผิดพลาดมาตรฐาน
MAIL กำหนดชื่อพาธของไฟล์เมลบ็อกซ์ของผู้ใช้เพื่อจุดประสงค์ในการส่งเมลเข้า
การแจ้งเตือน หากมีการตั้งค่าตัวแปรนี้ เชลล์จะแจ้งให้ผู้ใช้ทราบหาก
ไฟล์ที่ตั้งชื่อโดยตัวแปรจะถูกสร้างขึ้นหรือหากเวลาแก้ไขมีการเปลี่ยนแปลง
การแจ้งผู้ใช้จะต้องกระทำโดยการเขียนสตริง unspecified
จัดรูปแบบเป็นข้อผิดพลาดมาตรฐานก่อนที่จะเขียนสตริงพร้อมท์หลักถัดไป
การตรวจสอบดังกล่าวจะต้องดำเนินการหลังจากสิ้นสุดช่วงเวลาที่กำหนดไว้เท่านั้น
โดย เช็คเมล ตัวแปรหลังจากการตรวจสอบครั้งสุดท้ายดังกล่าว ผู้ใช้บริการจะได้รับแจ้ง
เพียงแค่ MAIL ถูกตั้งค่าและ เมลพาธ ไม่ได้ตั้งค่า
เช็คเมล
สร้างค่าจำนวนเต็มทศนิยมที่ระบุความถี่ (เป็นวินาที)
เชลล์จะตรวจสอบการมาถึงของจดหมายในไฟล์ที่ระบุโดย เมลพาธ
or MAIL ตัวแปร ค่าเริ่มต้นจะเป็น 600 วินาที หากตั้งค่าเป็นศูนย์ ค่า
เชลล์จะตรวจสอบก่อนที่จะออกพรอมต์หลักแต่ละรายการ
เมลพาธ ระบุรายชื่อพาธและข้อความทางเลือกที่คั่นด้วย
ตัวอักษร หากมีการตั้งค่าตัวแปรนี้ เชลล์จะแจ้งให้ผู้ใช้ทราบหากมี
ไฟล์ที่ตั้งชื่อโดยตัวแปรจะถูกสร้างขึ้นหรือหากมีการแก้ไขใดๆ
เวลาเปลี่ยนไป (ดูรายการก่อนหน้าสำหรับ MAIL สำหรับคำอธิบายของจดหมายมาถึง
และผู้ใช้แจ้ง) แต่ละชื่อเส้นทางสามารถตามด้วย '%' และสายอักขระที่
จะต้องอยู่ภายใต้การขยายพารามิเตอร์และเขียนเป็นข้อผิดพลาดมาตรฐานเมื่อ
การเปลี่ยนแปลงเวลาการเปลี่ยนแปลง ถ้า '%' อักขระในชื่อพาธนำหน้าด้วย a
ให้ถือว่าเป็นอักษร '%' ในชื่อพาธ ค่าเริ่มต้น
ไม่ได้ระบุข้อความ
การขอ เมลพาธ ตัวแปรสภาพแวดล้อมมีความสำคัญเหนือ MAIL ตัวแปร
นศ กำหนดตำแหน่งของแค็ตตาล็อกข้อความสำหรับการประมวลผลของ LC_MESSAGES.
เส้นทาง สร้างสตริงที่จัดรูปแบบตามที่อธิบายไว้ในโวลุ่มคำจำกัดความพื้นฐานของ
POSIX.1–2008, บท 8, สภาพสิ่งแวดล้อม ตัวแปร, ใช้เพื่อมีผลคำสั่ง
การตีความ; ดู Section 2.9.1.1, คำสั่ง ค้นหา และ การกระทำ.
PWD ตัวแปรนี้จะแสดงชื่อพาธสัมบูรณ์ของการทำงานปัจจุบัน
ไดเร็กทอรี การมอบหมายให้ตัวแปรนี้อาจถูกละเว้น
อะซิงโครนัส กิจกรรม
การขอ sh ยูทิลิตี้จะต้องดำเนินการมาตรฐานสำหรับสัญญาณทั้งหมด (ดู Section 1.4, ประโยชน์
รายละเอียด เริ่มต้น) โดยมีข้อยกเว้นดังต่อไปนี้
หากเชลล์เป็นแบบโต้ตอบ สัญญาณ SIGINT ที่ได้รับระหว่างการแก้ไขบรรทัดคำสั่งจะเป็น
จัดการตามที่อธิบายไว้ใน EXTENDED DESCRIPTION และรับสัญญาณ SIGINT ที่ other
เวลาจะถูกจับ แต่ไม่มีการดำเนินการใด ๆ
หากเชลล์เป็นแบบโต้ตอบ:
* สัญญาณ SIGQUIT และ SIGTERM จะถูกละเว้น
* ถ้า -ม ตัวเลือกมีผลบังคับใช้ สัญญาณ SIGTTIN, SIGTTOU และ SIGTSTP จะถูกละเว้น
* ถ้า -ม ตัวเลือกไม่มีผล ไม่ได้ระบุว่า SIGTTIN, SIGTTOU และ
สัญญาณ SIGTSTP จะถูกละเว้น ตั้งค่าเป็นการดำเนินการเริ่มต้น หรือตรวจพบ ถ้าใช่
ที่จับได้ เปลือกจะต้องตั้งค่าสัญญาณเป็น .ในฟังก์ชันจับสัญญาณ
การกระทำเริ่มต้นและยกสัญญาณ (หลังจากทำตามขั้นตอนที่เหมาะสมเช่น
เรียกคืนการตั้งค่าเทอร์มินัล)
การดำเนินการมาตรฐานและการดำเนินการที่อธิบายไว้ข้างต้นสำหรับเชลล์แบบโต้ตอบสามารถ
แทนที่โดยใช้ กับดัก ยูทิลิตี้ในตัวพิเศษ (ดู กับดัก และ Section 2.11, สัญญาณ
และ ความผิดพลาด การจัดการ).
STDOUT
ดูส่วน STDERR
สแตเดอร์
ยกเว้นจะระบุไว้เป็นอย่างอื่น (ตามคำอธิบายของยูทิลิตี้ที่เรียกใช้หรือในการโต้ตอบ
โหมด) ข้อผิดพลาดมาตรฐานจะใช้สำหรับข้อความวินิจฉัยเท่านั้น
เอาท์พุท ไฟล์
ไม่
ขยาย DESCRIPTION
ดู บท 2, เปลือก คำสั่ง ภาษาที่ใช้. ฟังก์ชันการทำงานที่อธิบายไว้ในส่วนที่เหลือของ
ส่วนคำอธิบายเพิ่มเติมจะมีให้ในการใช้งานที่สนับสนุน User
ตัวเลือกยูทิลิตี้การพกพา (และส่วนที่เหลือของส่วนนี้จะไม่ถูกแรเงาเพิ่มเติมสำหรับสิ่งนี้
ตัวเลือก)
คำสั่ง ประวัติขององค์กร รายการ
เมื่อราคาของ sh ยูทิลิตี้กำลังถูกใช้แบบโต้ตอบ จะต้องรักษารายการคำสั่ง
ก่อนหน้านี้ป้อนจากเทอร์มินัลในไฟล์ที่ชื่อ ฮิสไฟล์ สิ่งแวดล้อม
ตัวแปร. ไม่ระบุประเภท ขนาด และรูปแบบภายในของไฟล์นี้ หลายรายการ sh
กระบวนการสามารถแบ่งปันการเข้าถึงไฟล์สำหรับผู้ใช้ หากสิทธิ์การเข้าถึงไฟล์อนุญาตสิ่งนี้
ดูคำอธิบายของ ฮิสไฟล์ ตัวแปรสภาพแวดล้อม
คำสั่ง Line การตัดต่อ
เมื่อ sh กำลังใช้งานแบบโต้ตอบจากเทอร์มินัล คำสั่งปัจจุบัน และคำสั่ง
ประวัติศาสตร์ (ดู fc) สามารถแก้ไขได้โดยใช้ viการแก้ไขบรรทัดคำสั่งโหมด โหมดนี้ใช้
คำสั่งที่อธิบายด้านล่าง คล้ายกับชุดย่อยของคำสั่งที่อธิบายไว้ใน vi ประโยชน์
การใช้งานอาจมีโหมดการแก้ไขบรรทัดคำสั่งอื่นๆ ที่สอดคล้องกับการแก้ไขอื่นๆ
สาธารณูปโภค.
คำสั่ง เซ็ต -o vi จะเปิดใช้งาน vi-โหมดแก้ไขและวาง sh เข้าไป vi โหมดแทรก (ดู
คำสั่ง Line การตัดต่อ (โหมด vi)). คำสั่งนี้จะปิดใช้งานโหมดแก้ไขอื่น ๆ ด้วย
ที่จะนำไปปฏิบัติได้ คำสั่ง เซ็ต +o vi คนพิการ viการแก้ไขโหมด
เทอร์มินัลโหมดบล็อกบางตัวอาจไม่รองรับการแก้ไขบรรทัดคำสั่งเชลล์ ถ้า
เทอร์มินัลไม่สามารถให้โหมดแก้ไขใดโหมดหนึ่งได้ ไม่จำเป็นต้อง เซ็ต -o vi เมื่อ
โดยใช้เชลล์บนเทอร์มินัลนี้
ในส่วนต่อไปนี้ ตัวอักษร ลบออก, ขัดขวาง, ฆ่าและ ท้ายไฟล์ เป็น
ที่กำหนดโดย สติ ประโยชน์
คำสั่ง Line การตัดต่อ (โหมด vi)
In vi โหมดการแก้ไข จะต้องมีบรรทัดที่แตกต่าง บรรทัดแก้ไข การแก้ไขทั้งหมด
การดำเนินการที่แก้ไขบรรทัดมีผลกับบรรทัดแก้ไข บรรทัดแก้ไขใหม่ล่าสุดเสมอ
บรรทัดในบัฟเฟอร์ประวัติคำสั่ง
ด้วยระบบเส้นทาง viเปิดใช้งานโหมด sh สามารถสลับระหว่างโหมดแทรกและโหมดคำสั่งได้
เมื่ออยู่ในโหมดแทรก อักขระที่ป้อนจะถูกแทรกลงในบรรทัดคำสั่ง ยกเว้น
ตามที่ระบุไว้ใน vi Line การตัดต่อ สิ่งที่ใส่เข้าไป โหมด. เมื่อเข้ามา sh และหลังจากการสิ้นสุดของ
คำสั่งก่อนหน้า sh จะอยู่ในโหมดแทรก
การพิมพ์ตัวอักษรหลบหนีจะเปลี่ยน sh เข้าสู่โหมดคำสั่ง (ดู vi Line การตัดต่อ คำสั่ง
โหมด). ในโหมดคำสั่ง อักขระที่ป้อนจะต้องเรียกใช้การดำเนินการที่กำหนดไว้ be
ใช้เป็นส่วนหนึ่งของการดำเนินการหลายอักขระ หรือถือเป็นข้อผิดพลาด ตัวละครที่
ไม่รู้จักเป็นส่วนหนึ่งของคำสั่งแก้ไขให้ยุติการแก้ไขใด ๆ ที่เฉพาะเจาะจง
คำสั่งและจะแจ้งเตือนเครื่องปลายทาง ถ้า sh รับสัญญาณ SIGINT ในโหมดคำสั่ง
(ไม่ว่าจะสร้างขึ้นโดยการพิมพ์ ขัดขวาง ลักษณะหรือโดยวิธีอื่น) จะ
ยุติการแก้ไขบรรทัดคำสั่งบนบรรทัดคำสั่งปัจจุบัน ออกคำสั่งใหม่บนบรรทัดถัดไป
บรรทัดของเทอร์มินัล และรีเซ็ตประวัติคำสั่ง (ดู fc) เพื่อให้ล่าสุด
คำสั่งที่ดำเนินการคือคำสั่งก่อนหน้า (นั่นคือ คำสั่งที่ได้รับการแก้ไขเมื่อ
ถูกขัดจังหวะไม่กลับเข้าสู่ประวัติศาสตร์)
ในส่วนต่อไปนี้ วลี ``เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของคำ''
จะหมายถึง ``เลื่อนเคอร์เซอร์ไปที่อักขระตัวแรกของคำปัจจุบัน'' และวลี
``เลื่อนเคอร์เซอร์ไปที่ท้ายคำ'' หมายถึง ``เลื่อนเคอร์เซอร์ไปที่ท้ายคำ
ลักษณะของคำปัจจุบัน'' วลี ``จุดเริ่มต้นของบรรทัดคำสั่ง'' หมายถึง
จุดระหว่างจุดสิ้นสุดของสตริงพร้อมต์ที่ออกโดยเชลล์ (หรือจุดเริ่มต้นของ
บรรทัดเทอร์มินัลหากไม่มีสตริงพร้อมท์) และอักขระตัวแรกของคำสั่ง
ข้อความ
vi Line การตัดต่อ สิ่งที่ใส่เข้าไป โหมด
ในขณะที่อยู่ในโหมดแทรก อักขระใดๆ ที่พิมพ์จะถูกแทรกลงในบรรทัดคำสั่งปัจจุบัน
เว้นแต่จะมาจากชุดต่อไปนี้
ดำเนินการบรรทัดคำสั่งปัจจุบัน หากบรรทัดคำสั่งปัจจุบันไม่ว่างเปล่า นี่
บรรทัดจะถูกป้อนลงในประวัติคำสั่ง (ดู fc).
ลบออก ลบอักขระก่อนหน้าไปยังตำแหน่งเคอร์เซอร์ปัจจุบันและย้าย
ตำแหน่งเคอร์เซอร์ปัจจุบันกลับหนึ่งอักขระ ในโหมดแทรก อักขระต้องเป็น
ลบออกจากทั้งหน้าจอและบัฟเฟอร์เมื่อแบ็คสเปซ
ขัดขวาง If sh รับสัญญาณ SIGINT ในโหมดแทรก (ไม่ว่าจะสร้างขึ้นโดยการพิมพ์
ขัดขวาง อักขระหรือโดยวิธีอื่น) ให้ยุติการแก้ไขบรรทัดคำสั่ง
ด้วยเอฟเฟกต์เดียวกับที่อธิบายไว้สำหรับการขัดจังหวะโหมดคำสั่ง ดู คำสั่ง
Line การตัดต่อ (โหมด vi).
ฆ่า ล้างอักขระทั้งหมดจากบรรทัดอินพุต
-V
แทรกการป้อนอักขระถัดไป แม้ว่าอักขระนั้นจะเป็นอักขระพิเศษก็ตาม
แทรกโหมดอักขระ
-W
ลบอักขระจากตัวที่นำหน้าเคอร์เซอร์ไปยังคำก่อนหน้า
ขอบเขต ขอบเขตของคำในกรณีนี้อยู่ใกล้กับเคอร์เซอร์ของ
จุดเริ่มต้นของบรรทัดหรืออักขระที่ไม่อยู่ใน ว่างเปล่า ไม่ จุด
การจำแนกอักขระของสถานที่ปัจจุบัน
ท้ายไฟล์
ตีความว่าเป็นจุดสิ้นสุดของอินพุตใน sh. การตีความนี้จะเกิดขึ้นเฉพาะที่
จุดเริ่มต้นของบรรทัดอินพุต ถ้า ท้ายไฟล์ ถูกป้อนนอกเหนือจากที่
ขึ้นต้นบรรทัด ผลลัพธ์ไม่ระบุ
สถานที่ sh เข้าสู่โหมดคำสั่ง
vi Line การตัดต่อ คำสั่ง โหมด
ในโหมดคำสั่งสำหรับคุณลักษณะการแก้ไขบรรทัดคำสั่ง ตัวเลขทศนิยมไม่ขึ้นต้นด้วย 0
ที่นำหน้าจดหมายคำสั่งจะถูกจดจำ บางคำสั่งใช้ตัวเลขทศนิยมเหล่านี้
เป็นตัวเลขที่มีผลต่อการดำเนินการ
ระยะ การเคลื่อนไหว คำสั่ง แสดงถึงหนึ่งในคำสั่ง:
0 b F l W ^ $ ; E f T w | , B e h t
หากบรรทัดปัจจุบันไม่ใช่บรรทัดแก้ไข คำสั่งใดๆ ที่แก้ไขบรรทัดปัจจุบันจะต้อง
ทำให้เนื้อหาของบรรทัดปัจจุบันแทนที่เนื้อหาของบรรทัดแก้ไขและ
บรรทัดปัจจุบันจะกลายเป็นบรรทัดแก้ไข การแทนที่นี้ไม่สามารถยกเลิกได้ (ดู u และ
U คำสั่งด้านล่าง) การแก้ไขที่ร้องขอจะต้องดำเนินการในบรรทัดแก้ไข
เมื่อบรรทัดปัจจุบันเป็นบรรทัดแก้ไข ให้แก้ไขโดยตรงที่
แก้ไขบรรทัด
คำสั่งใด ๆ ที่นำหน้าด้วย นับ จะนับ (ค่าตัวเลขของใดๆ
เลขทศนิยมนำหน้า) เว้นแต่จะระบุไว้เป็นอย่างอื่น การนับนี้จะทำให้
ดำเนินการซ้ำตามจำนวนครั้งที่กำหนดโดยการนับ เว้นแต่เป็นอย่างอื่น
ตั้งข้อสังเกต a นับ ที่อยู่นอกระยะถือเป็นเงื่อนไขผิดพลาดและต้องแจ้งเตือน
เทอร์มินัล แต่ทั้งตำแหน่งเคอร์เซอร์ หรือบรรทัดคำสั่ง จะไม่เปลี่ยนแปลง
เงื่อนไข word และ คำใหญ่ ใช้ตามที่กำหนดไว้ใน vi คำอธิบาย. คำว่า ประหยัด กันชน
ตรงกับคำว่า ไม่มีชื่อ กันชน in vi.
คำสั่งต่อไปนี้จะต้องรับรู้ในโหมดคำสั่ง:
ดำเนินการบรรทัดคำสั่งปัจจุบัน หากบรรทัดคำสั่งปัจจุบันไม่ว่างเปล่า นี่
บรรทัดจะถูกป้อนลงในประวัติคำสั่ง (ดู fc).
-หลี่
วาดบรรทัดคำสั่งปัจจุบันใหม่ วางเคอร์เซอร์ไว้ที่ตำแหน่งเดียวกันบน
เส้นที่วาดใหม่
# ใส่ตัวอักษร '#' ที่จุดเริ่มต้นของบรรทัดคำสั่งปัจจุบันและปฏิบัติ
บรรทัดแก้ไขผลลัพธ์เป็นความคิดเห็น บรรทัดนี้จะถูกป้อนลงใน
ประวัติคำสั่ง; ดู fc.
= แสดงการขยายคำเชลล์ที่เป็นไปได้ (ดู Section 2.6, คำ ขยาย) จาก
คำใหญ่ที่ตำแหน่งบรรทัดคำสั่งปัจจุบัน
หมายเหตุ สิ่งนี้ไม่ได้แก้ไขเนื้อหาของบรรทัดปัจจุบัน ดังนั้น
ไม่ทำให้บรรทัดปัจจุบันกลายเป็นบรรทัดแก้ไข
ส่วนขยายเหล่านี้จะแสดงบนสายเทอร์มินัลที่ตามมา ถ้าคำใหญ่
ไม่มีอักขระใด ๆ '?', '*'หรือ '[', หนึ่ง ('*') จะเป็น
สันนิษฐานโดยปริยายในตอนท้าย หากไดเรกทอรีใดตรงกัน ส่วนขยายเหล่านี้
จะมี '/' อักขระต่อท้าย หลังจากขยายเส้นจะเป็น
วาดใหม่ เคอร์เซอร์จะเปลี่ยนตำแหน่งที่ตำแหน่งเคอร์เซอร์ปัจจุบัน และ sh จะเป็น
อยู่ในโหมดคำสั่ง
\ ดำเนินการขยายชื่อพาธ (ดู Section 2.6.6, ชื่อพาธ การขยายตัว) บน
bigword ปัจจุบัน จนถึงชุดอักขระที่ใหญ่ที่สุดที่สามารถจับคู่ได้
ไม่ซ้ำกัน ถ้าคำใหญ่ไม่มีตัวอักษร '?', '*'หรือ '[',
('*') ให้สันนิษฐานโดยปริยายในตอนท้าย การขยายตัวสูงสุดนี้
จากนั้นจะแทนที่ bigword ดั้งเดิมในบรรทัดคำสั่งและเคอร์เซอร์
จะถูกวางไว้หลังจากการขยายนี้ ถ้าเกิด bigword ที่สมบูรณ์และ
ตรงกับไดเร็กทอรี a '/' อักขระจะถูกแทรกโดยตรงหลังจาก
คำใหญ่ หากไฟล์อื่นตรงกันทั้งหมด ไฟล์เดียว จะเป็น
แทรกหลังคำใหญ่ หลังจากการดำเนินการนี้ sh ให้อยู่ในส่วนแทรก
โหมด.
* ดำเนินการขยายชื่อพาธบน bigword ปัจจุบัน และแทรกส่วนขยายทั้งหมดลงใน
คำสั่งแทนที่ bigword ปัจจุบัน โดยแต่ละส่วนขยายคั่นด้วย a
เดี่ยว . หากอยู่ท้ายบรรทัด ตำแหน่งเคอร์เซอร์ปัจจุบันจะเป็น
ย้ายไปยังตำแหน่งคอลัมน์แรกหลังจากการขยายและ sh จะเป็น
อยู่ในโหมดแทรก มิฉะนั้น ตำแหน่งเคอร์เซอร์ปัจจุบันจะเป็นตำแหน่งสุดท้าย
ตำแหน่งคอลัมน์ของอักขระตัวแรกหลังการขยายและ sh จะเป็น
อยู่ในโหมดแทรก หากคำใหญ่ปัจจุบันไม่มีอักขระใด ๆ
'?', '*'หรือ '['ก่อนการผ่าตัด an ('*') จะเป็นโดยปริยาย
สันนิษฐานในตอนท้าย
@จดหมาย ใส่ค่าของนามแฝงที่ชื่อ _จดหมาย. สัญลักษณ์ จดหมาย หมายถึง
อักขระตัวอักษรเดียวจากชุดอักขระแบบพกพา การใช้งานอาจ
รองรับอักขระเพิ่มเติมเป็นส่วนขยาย ถ้านามแฝง _จดหมาย มี
คำสั่งแก้ไขอื่น ๆ คำสั่งเหล่านี้จะต้องดำเนินการเป็นส่วนหนึ่งของ
การแทรก หากไม่มีนามแฝง _จดหมาย ถูกเปิดใช้งาน คำสั่งนี้จะไม่มีผลใดๆ
[นับ]~ แปลงหากอักขระปัจจุบันเป็นตัวพิมพ์เล็กให้เทียบเท่า
ตัวพิมพ์ใหญ่และ รอง ในทางกลับกันตามที่กำหนดโดยสถานที่ปัจจุบัน ดิ
ตำแหน่งเคอร์เซอร์ปัจจุบันจะต้องเลื่อนไปหนึ่งอักขระ ถ้าเคอร์เซอร์
อยู่ในตำแหน่งที่อักขระสุดท้ายของบรรทัด การแปลงกรณีจะ
เกิดขึ้น แต่เคอร์เซอร์จะไม่เลื่อนไปข้างหน้า ถ้า '~' คำสั่งนำหน้าด้วย a
นับ, จำนวนอักขระนั้นจะถูกแปลง และเคอร์เซอร์จะเป็น
เลื่อนไปยังตำแหน่งอักขระหลังจากแปลงอักขระตัวสุดท้าย ถ้า
นับ มากกว่าจำนวนอักขระหลังเคอร์เซอร์ นี้จะไม่
ถือว่าผิดพลาด; เคอร์เซอร์จะเลื่อนไปที่อักขระตัวสุดท้ายบน
เส้น
[นับ]. ทำซ้ำคำสั่ง non-motion ล่าสุด แม้ว่าจะถูกดำเนินการบนก่อนหน้า
บรรทัดคำสั่ง. หากคำสั่งก่อนหน้านี้นำหน้าด้วย a นับและไม่มีการนับคือ
มอบให้กับ '.' คำสั่งให้นับรวมจากคำสั่งก่อนหน้าด้วย
เป็นส่วนหนึ่งของคำสั่งซ้ำ ถ้า '.' คำสั่งนำหน้าด้วย a นับ,
สิ่งนี้จะแทนที่ใด ๆ นับ อาร์กิวเมนต์ของคำสั่งก่อนหน้า ดิ นับ
ระบุไว้ใน '.' คำสั่งจะกลายเป็นการนับต่อไป '.'
ออกคำสั่งโดยไม่นับ
[จำนวน]v เรียก vi ตัวแก้ไขเพื่อแก้ไขบรรทัดคำสั่งปัจจุบันในไฟล์ชั่วคราว เมื่อไหร่
ตัวแก้ไขออกไป คำสั่งในไฟล์ชั่วคราวจะถูกดำเนินการและ
วางไว้ในประวัติคำสั่ง ถ้า จำนวน รวมอยู่ด้วยจะระบุคำสั่ง
ตัวเลขในประวัติคำสั่งที่จะแก้ไข แทนที่จะเป็นคำสั่งปัจจุบัน
เส้น
[นับ]l (เอล)
[นับ]
ย้ายตำแหน่งเคอร์เซอร์ปัจจุบันไปยังตำแหน่งอักขระถัดไป ถ้าเคอร์เซอร์
อยู่ในตำแหน่งอักขระสุดท้ายของบรรทัด เทอร์มินัลจะได้รับการแจ้งเตือน
และเคอร์เซอร์จะต้องไม่ก้าวหน้า ถ้า นับ มากกว่าจำนวน
อักขระหลังเคอร์เซอร์ ไม่ถือเป็นข้อผิดพลาด เคอร์เซอร์
จะเลื่อนไปยังอักขระตัวสุดท้ายในบรรทัด
[นับ]h ย้ายตำแหน่งเคอร์เซอร์ปัจจุบันไปที่ นับth (ค่าเริ่มต้น 1) อักขระก่อนหน้า
ตำแหน่ง. หากเคอร์เซอร์อยู่ในตำแหน่งที่อักขระตัวแรกของบรรทัด เครื่องหมาย
เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะไม่ถูกย้าย ถ้าการนับคือ
มากกว่าจำนวนอักขระก่อนเคอร์เซอร์ นี้จะไม่
ถือว่าผิดพลาด; เคอร์เซอร์จะย้ายไปที่อักขระตัวแรกในบรรทัด
[นับ]w ย้ายไปที่จุดเริ่มต้นของคำถัดไป หากเคอร์เซอร์อยู่ในตำแหน่งสุดท้าย
ลักษณะของเส้น ขั้วจะต้องได้รับการแจ้งเตือนและเคอร์เซอร์จะต้องไม่
ขั้นสูง. ถ้า นับ มากกว่าจำนวนคำที่อยู่หลังเคอร์เซอร์ นี่
จะไม่ถือว่าเป็นข้อผิดพลาด เคอร์เซอร์จะเลื่อนไปที่อักขระตัวสุดท้าย
บนเส้น
[นับ]W ย้ายไปที่จุดเริ่มต้นของคำใหญ่ถัดไป หากเคอร์เซอร์อยู่ในตำแหน่งสุดท้าย
ลักษณะของเส้น ขั้วจะต้องได้รับการแจ้งเตือนและเคอร์เซอร์จะต้องไม่
ขั้นสูง. ถ้า นับ มากกว่าจำนวนคำใหญ่หลังเคอร์เซอร์
นี้จะไม่ถือว่าเป็นข้อผิดพลาด; เคอร์เซอร์จะเลื่อนไปสุดท้าย
ตัวละครในบรรทัด
[นับ]e ย้ายไปยังจุดสิ้นสุดของคำปัจจุบัน หากลงท้ายคำ ให้ย้ายไปที่จุดสิ้นสุดของ
คำถัดไป หากเคอร์เซอร์อยู่ในตำแหน่งที่อักขระสุดท้ายของบรรทัด
เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะไม่ก้าวหน้า ถ้า นับ
มากกว่าจำนวนคำที่อยู่หลังเคอร์เซอร์ จะต้องไม่เป็น
ถือว่าผิดพลาด; เคอร์เซอร์จะเลื่อนไปที่อักขระสุดท้ายในบรรทัด
[นับ]E ย้ายไปที่จุดสิ้นสุดของคำใหญ่ปัจจุบัน หากลงท้ายคำใหญ่ ให้ย้ายไปที่
จบ bigword ถัดไป หากวางเคอร์เซอร์ไว้ที่อักขระตัวสุดท้ายของ
บรรทัด เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะต้องไม่ก้าวหน้า ถ้า
นับ มากกว่าจำนวนคำใหญ่หลังเคอร์เซอร์ นี้จะไม่
ถือว่าผิดพลาด; เคอร์เซอร์จะเลื่อนไปที่อักขระตัวสุดท้ายบน
เส้น
[นับ]b ย้ายไปที่จุดเริ่มต้นของคำปัจจุบัน ถ้าขึ้นต้นคำ ให้ย้าย
ถึงจุดเริ่มต้นของคำก่อนหน้า หากเคอร์เซอร์อยู่ในตำแหน่งแรก
ลักษณะของเส้น ขั้วจะต้องได้รับการแจ้งเตือนและเคอร์เซอร์จะต้องไม่
ย้าย. ถ้า นับ มากกว่าจำนวนคำนำหน้าเคอร์เซอร์
นี้จะไม่ถือว่าเป็นข้อผิดพลาด; เคอร์เซอร์จะกลับไปที่แรก
ตัวละครในบรรทัด
[นับ]B ย้ายไปที่จุดเริ่มต้นของคำใหญ่ปัจจุบัน ถ้าขึ้นต้นคำใหญ่
ย้ายไปที่จุดเริ่มต้นของคำใหญ่ก่อนหน้า หากวางเคอร์เซอร์ไว้ที่
อักขระตัวแรกของบรรทัด เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์
จะไม่ถูกย้าย ถ้า นับ มากกว่าจำนวนคำใหญ่ก่อนหน้า
เคอร์เซอร์นี้จะไม่ถือว่าเป็นข้อผิดพลาด เคอร์เซอร์จะกลับไปที่
อักขระตัวแรกในบรรทัด
^ ย้ายตำแหน่งเคอร์เซอร์ปัจจุบันไปที่อักขระตัวแรกบนบรรทัดอินพุตที่
ไม่ใช่ .
$ ย้ายไปยังตำแหน่งอักขระสุดท้ายบนบรรทัดคำสั่งปัจจุบัน
0 (ศูนย์.) ย้ายไปยังตำแหน่งอักขระตัวแรกบนบรรทัดคำสั่งปัจจุบัน
[นับ]| เลื่อนไปที่ นับตำแหน่งอักขระ th บนบรรทัดคำสั่งปัจจุบัน ถ้าไม่มีตัวเลข
ถูกระบุให้ย้ายไปที่ตำแหน่งแรก ตำแหน่งอักขระตัวแรกจะเป็น
หมายเลข 1 หากจำนวนมากกว่าจำนวนอักขระในบรรทัด
นี้จะไม่ถือว่าเป็นข้อผิดพลาด; เคอร์เซอร์จะถูกวางไว้บนสุด
ตัวละครในบรรทัด
[นับ]fc ย้ายไปที่การเกิดขึ้นครั้งแรกของตัวละคร 'ค' ที่เกิดขึ้นหลังกระแส
ตำแหน่งเคอร์เซอร์ หากเคอร์เซอร์อยู่ในตำแหน่งที่อักขระสุดท้ายของบรรทัด
เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะไม่ก้าวหน้า ถ้า
ตัวอักษร 'ค' ไม่เกิดขึ้นในบรรทัดหลังจากตำแหน่งเคอร์เซอร์ปัจจุบัน
เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะไม่ถูกย้าย
[นับ]Fc ย้ายไปที่การเกิดขึ้นครั้งแรกของตัวละคร 'ค' ที่เกิดขึ้นก่อนกระแส
ตำแหน่งเคอร์เซอร์ หากเคอร์เซอร์อยู่ในตำแหน่งที่อักขระตัวแรกของ
บรรทัด เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะไม่ถูกย้าย ถ้า
ตัวอักษร 'ค' ไม่เกิดขึ้นในบรรทัดก่อนตำแหน่งเคอร์เซอร์ปัจจุบัน
เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะไม่ถูกย้าย
[นับ]tc ย้ายไปยังตัวละครก่อนการเกิดขึ้นครั้งแรกของตัวละคร 'ค' ที่
เกิดขึ้นหลังจากตำแหน่งเคอร์เซอร์ปัจจุบัน หากเคอร์เซอร์อยู่ในตำแหน่ง
อักขระสุดท้ายของบรรทัด เทอร์มินัลจะได้รับการแจ้งเตือน และเคอร์เซอร์จะ
ไม่ก้าวหน้า ถ้าตัวละคร 'ค' ไม่เกิดขึ้นในบรรทัดหลังจาก
ตำแหน่งเคอร์เซอร์ปัจจุบัน เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะต้องไม่
จะถูกย้าย
[นับ]Tc ย้ายไปยังตัวละครหลังจากเกิดขึ้นครั้งแรกของตัวละคร 'ค' ที่
เกิดขึ้นก่อนตำแหน่งเคอร์เซอร์ปัจจุบัน หากเคอร์เซอร์อยู่ในตำแหน่ง
อักขระตัวแรกของบรรทัด เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์จะต้อง
ไม่ถูกย้าย ถ้าตัวละคร 'ค' ไม่เกิดเป็นเส้นก่อนกระแส
ตำแหน่งเคอร์เซอร์ เทอร์มินัลจะได้รับการแจ้งเตือน และเคอร์เซอร์จะต้องไม่
ย้าย
[นับ]; ทำซ้ำล่าสุด f, F, tหรือ T สั่งการ. อาร์กิวเมนต์ตัวเลขใด ๆ เกี่ยวกับสิ่งนั้น
คำสั่งก่อนหน้านี้จะถูกละเว้น ข้อผิดพลาดคือสิ่งที่อธิบายซ้ำ
คำสั่ง
[นับ], ทำซ้ำล่าสุด f, F, tหรือ T สั่งการ. อาร์กิวเมนต์ตัวเลขใด ๆ เกี่ยวกับสิ่งนั้น
คำสั่งก่อนหน้านี้จะถูกละเว้น อย่างไรก็ตามกลับทิศทางของสิ่งนั้น
คำสั่ง
a เข้าสู่โหมดแทรกหลังจากตำแหน่งเคอร์เซอร์ปัจจุบัน ตัวละครที่ป้อน
จะถูกแทรกก่อนตัวอักษรถัดไป
A เข้าสู่โหมดแทรกหลังจากสิ้นสุดบรรทัดคำสั่งปัจจุบัน
i เข้าสู่โหมดแทรกที่ตำแหน่งเคอร์เซอร์ปัจจุบัน ตัวละครที่ป้อน
จะถูกแทรกก่อนอักขระปัจจุบัน
I เข้าสู่โหมดแทรกที่จุดเริ่มต้นของบรรทัดคำสั่งปัจจุบัน
R เข้าสู่โหมดแทรก แทนที่อักขระจากบรรทัดคำสั่งที่เริ่มต้นที่
ตำแหน่งเคอร์เซอร์ปัจจุบัน
[นับ]cการเคลื่อนไหว
ลบอักขระระหว่างตำแหน่งเคอร์เซอร์ปัจจุบันและเคอร์เซอร์
ตำแหน่งที่จะเป็นผลมาจากคำสั่งการเคลื่อนไหวที่ระบุ จากนั้นป้อน แทรก
โหมดก่อนอักขระตัวแรกต่อท้ายอักขระที่ถูกลบ ถ้า นับ is
ที่กำหนดไว้ให้ใช้กับคำสั่งการเคลื่อนไหว อา นับ จะถูกละเลย
สำหรับคำสั่งการเคลื่อนไหวต่อไปนี้:
0 ^ $ c
หากคำสั่งการเคลื่อนไหวเป็นตัวอักษร 'ค', บรรทัดคำสั่งปัจจุบันจะเป็น
จะต้องเข้าสู่โหมดเคลียร์และแทรก หากคำสั่งการเคลื่อนไหวจะย้าย
ตำแหน่งเคอร์เซอร์ปัจจุบันไปยังจุดเริ่มต้นของบรรทัดคำสั่ง character
ภายใต้ตำแหน่งเคอร์เซอร์ปัจจุบันจะไม่ถูกลบ หากคำสั่งเคลื่อนไหว
จะย้ายตำแหน่งเคอร์เซอร์ปัจจุบันไปยังจุดสิ้นสุดของบรรทัดคำสั่ง
อักขระที่อยู่ใต้ตำแหน่งเคอร์เซอร์ปัจจุบันจะถูกลบ ถ้า นับ is
มากกว่าจำนวนอักขระระหว่างตำแหน่งเคอร์เซอร์ปัจจุบันและ
สิ้นสุดบรรทัดคำสั่งที่คำสั่งการเคลื่อนไหวจะย้ายเคอร์เซอร์
นี้จะไม่ถือว่าเป็นข้อผิดพลาด; อักขระที่เหลือทั้งหมดใน
ช่วงดังกล่าวจะถูกลบและเข้าสู่โหมดแทรก ถ้า
คำสั่งการเคลื่อนไหวไม่ถูกต้อง เทอร์มินัลจะได้รับการแจ้งเตือน เคอร์เซอร์จะไม่
ถูกย้ายและข้อความจะไม่ถูกลบ
C ลบจากอักขระปัจจุบันไปที่ท้ายบรรทัดแล้วเข้าสู่โหมดแทรก
ที่ปลายสายใหม่
S ล้างบรรทัดแก้ไขทั้งหมดและเข้าสู่โหมดแทรก
[นับ]rc แทนที่อักขระปัจจุบันด้วยอักขระ 'ค'. พร้อมเบอร์ นับ,
แทนที่ปัจจุบันและต่อไปนี้ นับ-1 ตัวอักษร หลังจากคำสั่งนี้
ตำแหน่งเคอร์เซอร์ปัจจุบันจะอยู่ที่อักขระตัวสุดท้ายที่มีการเปลี่ยนแปลง ถ้า
นับ มากกว่าจำนวนอักขระหลังเคอร์เซอร์ ซึ่งจะต้อง
ไม่ถือเป็นข้อผิดพลาด ตัวละครที่เหลือทั้งหมดจะมีการเปลี่ยนแปลง
[นับ]_ ต่อท้าย หลังตำแหน่งอักขระปัจจุบันแล้วต่อท้าย
bigword ในบรรทัดอินพุตก่อนหน้าหลัง the . จากนั้นเข้าสู่โหมดแทรก
หลังจากที่อักขระตัวสุดท้ายต่อท้ายเพียงแค่ต่อท้าย พร้อมเบอร์ นับ, ต่อท้าย นับth
bigword ในบรรทัดก่อนหน้า
[นับ]x ลบอักขระที่ตำแหน่งเคอร์เซอร์ปัจจุบันและวางตำแหน่งที่ถูกลบ
อักขระในบัฟเฟอร์บันทึก หากเคอร์เซอร์อยู่ในตำแหน่งสุดท้าย
อักขระของบรรทัดอักขระจะถูกลบและตำแหน่งเคอร์เซอร์
จะถูกย้ายไปยังอักขระก่อนหน้า (อักขระตัวสุดท้ายใหม่) ถ้า นับ
มากกว่าจำนวนอักขระหลังเคอร์เซอร์ ซึ่งจะต้องไม่
ถือว่าผิดพลาด; อักขระทั้งหมดจากเคอร์เซอร์ไปที่ท้ายบรรทัด
จะถูกลบ
[นับ]X ลบอักขระก่อนตำแหน่งเคอร์เซอร์ปัจจุบันและวางตัวลบ
อักขระในบัฟเฟอร์บันทึก อักขระภายใต้ตำแหน่งเคอร์เซอร์ปัจจุบัน
จะไม่เปลี่ยนแปลง หากเคอร์เซอร์อยู่ในตำแหน่งที่อักขระตัวแรกของ
สาย, เครื่องปลายทางจะได้รับการแจ้งเตือน, และ X คำสั่งไม่มีผล ถ้า
บรรทัดมีอักขระตัวเดียว the X คำสั่งไม่มีผล ถ้า
บรรทัดไม่มีอักขระ เทอร์มินัลจะได้รับการแจ้งเตือนและเคอร์เซอร์
จะไม่ถูกย้าย ถ้า นับ มากกว่าจำนวนตัวอักษรก่อนหน้า
เคอร์เซอร์นี้จะไม่ถือว่าเป็นข้อผิดพลาด ตัวละครทั้งหมดจาก
ก่อนที่เคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดจะถูกลบ
[นับ]dการเคลื่อนไหว
ลบอักขระระหว่างตำแหน่งเคอร์เซอร์ปัจจุบันและอักขระ
ตำแหน่งที่จะเป็นผลจากคำสั่งการเคลื่อนไหว หมายเลข นับ ซ้ำ
คำสั่งการเคลื่อนไหว นับ ครั้ง หากคำสั่งการเคลื่อนไหวจะเคลื่อนไปที่
จุดเริ่มต้นของบรรทัดคำสั่ง อักขระภายใต้ตำแหน่งเคอร์เซอร์ปัจจุบัน
จะไม่ถูกลบ หากคำสั่งการเคลื่อนไหวคือ d, คำสั่งปัจจุบันทั้งหมด
จะต้องเคลียร์ไลน์ ถ้า นับ มากกว่าจำนวนตัวอักษร
ระหว่างตำแหน่งเคอร์เซอร์ปัจจุบันและจุดสิ้นสุดของบรรทัดคำสั่งซึ่ง
คำสั่งการเคลื่อนไหวจะเลื่อนเคอร์เซอร์ ซึ่งไม่ถือเป็นข้อผิดพลาด
อักขระที่เหลือทั้งหมดในช่วงดังกล่าวจะถูกลบออก
อักขระที่ถูกลบจะถูกวางไว้ในบัฟเฟอร์บันทึก
D ลบอักขระทั้งหมดจากตำแหน่งเคอร์เซอร์ปัจจุบันจนถึงท้ายบรรทัด
อักขระที่ถูกลบจะถูกวางไว้ในบัฟเฟอร์บันทึก
[นับ]yการเคลื่อนไหว
ดึง (นั่นคือ คัดลอก) อักขระจากตำแหน่งเคอร์เซอร์ปัจจุบันไปที่
ตำแหน่งที่เกิดจากคำสั่งการเคลื่อนไหวลงในบัฟเฟอร์บันทึก หมายเลข นับ
จะถูกนำไปใช้กับคำสั่งการเคลื่อนไหว หากคำสั่งเคลื่อนไหวจะเคลื่อนไปทาง
จุดเริ่มต้นของบรรทัดคำสั่ง อักขระภายใต้เคอร์เซอร์ปัจจุบัน
ตำแหน่งจะไม่รวมอยู่ในชุดอักขระที่ถูกดึง ถ้าการเคลื่อนไหว
คำสั่งคือ y, บรรทัดคำสั่งปัจจุบันทั้งหมดจะถูกดึงเข้าไปในบันทึก
กันชน. ตำแหน่งเคอร์เซอร์ปัจจุบันจะไม่เปลี่ยนแปลง ถ้า นับ มีขนาดใหญ่ขึ้น
กว่าจำนวนอักขระระหว่างตำแหน่งเคอร์เซอร์ปัจจุบันกับจุดสิ้นสุดของ
บรรทัดคำสั่งที่คำสั่งการเคลื่อนไหวจะย้ายเคอร์เซอร์ นี่
จะไม่ถือว่าเป็นข้อผิดพลาด อักขระที่เหลือทั้งหมดใน
ระยะดังกล่าวจะถูกดึงออก
Y ดึงอักขระจากตำแหน่งเคอร์เซอร์ปัจจุบันไปที่ท้ายบรรทัดเข้าที่
บันทึกบัฟเฟอร์ ตำแหน่งของตัวละครปัจจุบันจะไม่เปลี่ยนแปลง
[นับ]p ใส่สำเนาของเนื้อหาปัจจุบันของบัฟเฟอร์บันทึกหลังเคอร์เซอร์ปัจจุบัน
ตำแหน่ง. ตำแหน่งเคอร์เซอร์ปัจจุบันจะเลื่อนไปเป็นอักขระตัวสุดท้าย
ใส่จากบัฟเฟอร์บันทึก อา นับ จะต้องระบุจำนวนสำเนาของบันทึก
จะต้องใส่บัฟเฟอร์
[นับ]P วางสำเนาของเนื้อหาปัจจุบันของบัฟเฟอร์บันทึกก่อนเคอร์เซอร์ปัจจุบัน
ตำแหน่ง. ตำแหน่งเคอร์เซอร์ปัจจุบันจะถูกย้ายไปที่อักขระตัวสุดท้ายที่ใส่
จากบัฟเฟอร์บันทึก อา นับ จะต้องระบุจำนวนสำเนาของบัฟเฟอร์บันทึก
จะใส่.
u เลิกทำคำสั่งสุดท้ายที่เปลี่ยนบรรทัดแก้ไข การดำเนินการนี้จะไม่ยกเลิก
คัดลอกบรรทัดคำสั่งใด ๆ ไปยังบรรทัดแก้ไข
U เลิกทำการเปลี่ยนแปลงทั้งหมดที่ทำกับบรรทัดแก้ไข การดำเนินการนี้จะไม่เลิกทำสำเนา
ของบรรทัดคำสั่งใดๆ ไปยังบรรทัดแก้ไข
[นับ]k
[นับ]- ตั้งค่าบรรทัดคำสั่งปัจจุบันเป็น นับบรรทัดคำสั่งก่อนหน้าใน
ประวัติคำสั่งเชลล์ ถ้า นับ ไม่ได้ระบุไว้ ค่าเริ่มต้นคือ 1. The
เคอร์เซอร์จะอยู่ในตำแหน่งที่อักขระตัวแรกของคำสั่งใหม่ ถ้า k or
- คำสั่งจะถอยเกินจำนวนสูงสุดของคำสั่งที่มีผลสำหรับสิ่งนี้
เปลือก (ได้รับผลกระทบจาก ฮิสต์ไซส์ ตัวแปรสภาพแวดล้อม) ขั้วต้องเป็น
เตือนแล้วคำสั่งไม่มีผล
[นับ]j
[นับ]+ ตั้งค่าบรรทัดคำสั่งปัจจุบันเป็น นับth บรรทัดคำสั่งถัดไปในเชลล์
ประวัติคำสั่ง ถ้า นับ ไม่ได้ระบุไว้ ค่าเริ่มต้นคือ 1 เคอร์เซอร์
จะต้องอยู่ในตำแหน่งบนอักขระตัวแรกของคำสั่งใหม่ ถ้า j or +
คำสั่งเลื่อนผ่านบรรทัดแก้ไขบรรทัดคำสั่งปัจจุบันจะถูกเรียกคืน
ไปที่บรรทัดแก้ไขและเทอร์มินัลจะได้รับการแจ้งเตือน
[จำนวน]G ตั้งค่าบรรทัดคำสั่งปัจจุบันให้เป็นบรรทัดคำสั่งที่เก่าที่สุดที่จัดเก็บไว้ในเชลล์
ประวัติคำสั่ง พร้อมเบอร์ จำนวนให้ตั้งค่าบรรทัดคำสั่งปัจจุบันเป็น
บรรทัดคำสั่ง จำนวน ในประวัติศาสตร์ ถ้าบรรทัดคำสั่ง จำนวน ไม่มีอยู่
เทอร์มินัลจะได้รับการแจ้งเตือนและบรรทัดคำสั่งจะไม่มีการเปลี่ยนแปลง
/Belt hold
ย้อนกลับผ่านประวัติคำสั่ง ค้นหารูปแบบที่ระบุ
เริ่มต้นด้วยบรรทัดคำสั่งก่อนหน้า รูปแบบใช้การจับคู่รูปแบบ
สัญกรณ์ที่อธิบายไว้ใน Section 2.13, แบบแผน แม็ทชิ่ง เอกสารยกเว้นว่าไฟล์
'^' ตัวอักษรจะมีความหมายพิเศษเมื่อปรากฏเป็นอักษรตัวแรก
of Belt hold . ในกรณีนี้ไฟล์ '^' ถูกละทิ้งและอักขระหลัง '^'
จะถูกจับคู่เฉพาะที่จุดเริ่มต้นของบรรทัด คำสั่งในคำสั่ง
ประวัติจะถือเป็นสตริง ไม่ใช่ชื่อไฟล์ ถ้ารูปแบบไม่
พบบรรทัดคำสั่งปัจจุบันจะไม่เปลี่ยนแปลงและเทอร์มินัลจะได้รับการแจ้งเตือน
หากพบในบรรทัดก่อนหน้า บรรทัดคำสั่งปัจจุบันจะถูกตั้งค่าเป็น that
บรรทัดและเคอร์เซอร์จะถูกตั้งค่าเป็นอักขระตัวแรกของบรรทัดคำสั่งใหม่
If Belt hold ว่างเปล่า รูปแบบไม่ว่างสุดท้ายที่กำหนดให้ / or ? จะเป็น
ใช้แล้ว. หากไม่มีรูปแบบที่ไม่ว่างเปล่าก่อนหน้านี้ เครื่องปลายทางจะได้รับการแจ้งเตือน
และบรรทัดคำสั่งปัจจุบันจะไม่เปลี่ยนแปลง
?Belt hold
เลื่อนไปข้างหน้าผ่านประวัติคำสั่งค้นหารูปแบบที่ระบุ
เริ่มต้นด้วยบรรทัดคำสั่งถัดไป รูปแบบใช้สัญกรณ์การจับคู่รูปแบบ
อธิบายไว้ใน Section 2.13, แบบแผน แม็ทชิ่ง เอกสารยกเว้นว่าไฟล์ '^'
ตัวอักษรจะมีความหมายพิเศษเมื่อปรากฏเป็นอักษรตัวแรกของ
Belt hold . ในกรณีนี้ไฟล์ '^' ถูกละทิ้งและอักขระหลัง '^'
จะถูกจับคู่เฉพาะที่จุดเริ่มต้นของบรรทัด คำสั่งในคำสั่ง
ประวัติจะถือเป็นสตริง ไม่ใช่ชื่อไฟล์ ถ้ารูปแบบไม่
พบบรรทัดคำสั่งปัจจุบันจะไม่เปลี่ยนแปลงและเทอร์มินัลแจ้งเตือน ถ้า
พบในบรรทัดต่อไปนี้ บรรทัดคำสั่งปัจจุบันจะถูกตั้งค่าเป็น that
บรรทัดและเคอร์เซอร์จะถูกตั้งค่าเป็นอักขระตัวแรกของบรรทัดคำสั่งใหม่
If Belt hold ว่างเปล่า รูปแบบไม่ว่างสุดท้ายที่กำหนดให้ / or ? จะเป็น
ใช้แล้ว. หากไม่มีรูปแบบที่ไม่ว่างเปล่าก่อนหน้านี้ เครื่องปลายทางจะได้รับการแจ้งเตือน
และบรรทัดคำสั่งปัจจุบันจะไม่เปลี่ยนแปลง
n ทำซ้ำล่าสุด / or ? สั่งการ. หากไม่มีก่อนหน้านี้ / or ?ที่
เทอร์มินัลจะได้รับการแจ้งเตือนและบรรทัดคำสั่งปัจจุบันจะไม่เปลี่ยนแปลง
N ทำซ้ำล่าสุด / or ? คำสั่งย้อนกลับทิศทางการค้นหา
หากไม่มีก่อนหน้านี้ / or ?, เทอร์มินัลจะได้รับการแจ้งเตือนและกระแส
บรรทัดคำสั่งจะยังคงไม่เปลี่ยนแปลง
EXIT สถานภาพ
ค่าทางออกต่อไปนี้จะถูกส่งคืน:
0 สคริปต์ที่จะดำเนินการประกอบด้วยบรรทัดว่างศูนย์หรือมากกว่าหรือ
ความคิดเห็นหรือทั้งสองอย่าง
1-125 เชลล์ที่ไม่โต้ตอบตรวจพบข้อผิดพลาดอื่นที่ไม่ใช่ command_file ไม่พบ,
รวมถึงแต่ไม่จำกัดเพียงข้อผิดพลาดทางไวยากรณ์ การเปลี่ยนเส้นทาง หรือการกำหนดตัวแปร
127 A ที่ระบุ command_file ไม่พบเชลล์ที่ไม่โต้ตอบ
มิฉะนั้น เชลล์จะส่งคืนสถานะการออกของคำสั่งสุดท้ายที่เรียกใช้หรือ
พยายามที่จะเรียกใช้ (ดูเพิ่มเติมที่ ทางออก ยูทิลิตี้ใน Section 2.14, พิเศษ Built-In
ปุ่ม อเนกประสงค์).
ผลกระทบที่เกิด OF ข้อผิดพลาด
ดู Section 2.8.1, ผลที่ตามมา of เปลือก ข้อผิดพลาด.
การขอ ดังต่อไปนี้ ส่วน เป็น ข้อมูล.
ใบสมัคร การใช้
อินพุตมาตรฐานและข้อผิดพลาดมาตรฐานคือไฟล์ที่กำหนดว่าเชลล์เป็น
โต้ตอบเมื่อ -ฉัน ไม่ได้ระบุไว้ ตัวอย่างเช่น:
sh > ไฟล์
และ:
sh 2> ไฟล์
สร้างเชลล์แบบโต้ตอบและแบบไม่โต้ตอบตามลำดับ แม้ว่าทั้งคู่จะยอมรับเทอร์มินัล
ผลลัพธ์ของเงื่อนไขข้อผิดพลาดแตกต่างกันตามที่อธิบายไว้ใน Section 2.8.1,
ผลที่ตามมา of เปลือก ข้อผิดพลาด; ในตัวอย่างที่สอง พบข้อผิดพลาดในการเปลี่ยนเส้นทางโดยa
ยูทิลิตี้ในตัวพิเศษจะยกเลิกเชลล์
แอปพลิเคชันที่สอดคล้องต้องป้องกันตัวถูกดำเนินการตัวแรก หากขึ้นต้นด้วย a ,
โดยนำหน้าด้วย "-−" อาร์กิวเมนต์ที่แสดงถึงจุดสิ้นสุดของตัวเลือก
แอปพลิเคชันควรสังเกตว่ามาตรฐาน เส้นทาง กับเปลือกไม่สามารถสันนิษฐานได้ว่าเป็น
ทั้ง bin / sh / or /usr/bin/shและควรกำหนดโดยการสอบปากคำของ เส้นทาง
ส่งคืนโดย รับคอนเฟิม เส้นทางเพื่อให้แน่ใจว่าชื่อพาธที่ส่งคืนเป็นชื่อพาธสัมบูรณ์และ
ไม่ใช่เชลล์ในตัว
ตัวอย่างเช่น เพื่อกำหนดตำแหน่งของมาตรฐาน sh ยูทิลิตี้:
คำสั่ง -v sh
ในการนำไปใช้งานบางอย่าง อาจส่งคืน:
/usr/xpg4/bin/sh
นอกจากนี้ บนระบบที่สนับสนุนสคริปต์ปฏิบัติการ (the "#!" สร้าง) มันคือ
แนะนำให้แอปพลิเคชันที่ใช้สคริปต์เรียกทำงานติดตั้งโดยใช้ รับคอนเฟิม เส้นทาง ไปยัง
กำหนดชื่อพาธของเชลล์และอัพเดต "#!" สคริปต์อย่างเหมาะสมตามที่เป็นอยู่
ติดตั้งแล้ว (เช่น with ความกระหายน้ำ) ตัวอย่างเช่น:
#
# การติดตั้ง เวลา ต้นฉบับ ไปยัง ติดตั้ง แก้ไข POSIX เปลือกหอย ชื่อพา ธ
#
# เข้ามา รายการ of เส้นทาง ไปยัง ตรวจสอบ
#
ซิฟส์=$ไอเอฟเอส
Sifs_set=${IFS+y}
ไอเอฟเอส=:
เซ็ต −− $(getconf เส้นทาง)
if [ "$Sifs_set" = y ]
แล้วก็
IFS=$ซิฟส์
อื่น
ยกเลิกการตั้งค่า ไอเอฟเอ
fi
#
# ตรวจสอบ แต่ละ เส้นทาง สำหรับ 'NS'
#
สำหรับ i
do
if [ -x "${i}"/sh ]
แล้วก็
Pshell=${i}/sh
fi
ทำ
#
# แจกันดอกไม้โรแมนติกนี้ is รายการ of สคริปต์ ไปยัง ปรับปรุง พวกเขา น่า be of
# ฟอร์ม '${name}.source' และ จะ be เปลี่ยน ไปยัง '${name}'
# แต่ละ ต้นฉบับ น่า เริ่ม:
#
# #!ติดตั้งเชลล์พาธ
#
scripts="a b c"
#
# แปลง แต่ละ ต้นฉบับ
#
สำหรับ i in ${สคริปต์}
do
ความกระหายน้ำ -อี "s|INSTALLSHELLPATH|${Pshell}|" < ${i}.แหล่งที่มา > ${i}
ทำ
ตัวอย่าง
1. ดำเนินการคำสั่งเชลล์จากสตริง:
sh -ค "แมว ไฟล์ของฉัน"
2. เรียกใช้เชลล์สคริปต์จากไฟล์ในไดเร็กทอรีปัจจุบัน:
sh my_shell_cmds
หลักการและเหตุผล
การขอ sh ยูทิลิตี้และ เซ็ต ยูทิลิตี้ในตัวพิเศษแบ่งปันชุดตัวเลือกทั่วไป
ชื่อ ไอเอฟเอ เดิมเป็นคำย่อของ ``Input Field Separators''; อย่างไรก็ตามสิ่งนี้
ชื่อทำให้เข้าใจผิดว่าเป็น ไอเอฟเอ จริง ๆ แล้วมีการใช้อักขระเป็นตัวสิ้นสุดฟิลด์ ดิ
KornShell ละเว้นเนื้อหาของ ไอเอฟเอ เมื่อเข้าสู่สคริปต์ แอปพลิเคชันที่สอดคล้อง
พึ่งนำเข้าไม่ได้ ไอเอฟเอ. เหตุผลข้อหนึ่งสำหรับสิ่งนี้ นอกเหนือจากการพิจารณาด้านความปลอดภัย
คือการช่วยเหลือคอมไพเลอร์เชลล์ที่เป็นไปได้ในอนาคต อนุญาต ไอเอฟเอ ที่จะนำเข้าจาก
สภาพแวดล้อมป้องกันการปรับให้เหมาะสมหลายอย่างที่อาจดำเนินการผ่าน dataflow
การวิเคราะห์สคริปต์เอง
ข้อความในส่วน STDIN เกี่ยวกับการไม่บล็อกอ่านเกี่ยวข้องกับอินสแตนซ์ของ sh ที่มี
ถูกเรียกโดยโปรแกรมภาษาซี ที่มีอินพุตมาตรฐานที่เปิดอยู่
ใช้แฟล็ก O_NONBLOCK; ดู เปิด() ในปริมาณอินเทอร์เฟซระบบของ POSIX.1-2008 ถ้า
เชลล์ไม่ได้รีเซ็ตแฟล็กนี้ มันจะยุติทันทีเพราะไม่มีข้อมูลอินพุต
จะพร้อมใช้งานและจะถือว่าเหมือนกับจุดสิ้นสุดไฟล์
ตัวเลือกที่เกี่ยวข้องกับa หวงห้าม เปลือกหอย (ชื่อคำสั่ง รช และ -ร ตัวเลือก) เป็น
ไม่รวมเพราะนักพัฒนามาตรฐานถือว่าระดับความปลอดภัยโดยนัย
ไม่สามารถทำได้และพวกเขาไม่ต้องการเพิ่มความคาดหวังที่ผิดพลาด
ในระบบที่รองรับสคริปต์ set-user-ID ประตูกลในอดีตถูกเชื่อมโยง a
สคริปต์ชื่อ -ฉัน. เมื่อเรียกตามลำดับเช่น:
sh -
หรือโดย:
#! usr/ถัง/sh -
ระบบประวัติศาสตร์สันนิษฐานว่าไม่มีตัวอักษรตัวเลือกตามมา ดังนั้น ปริมาณของ . นี้
POSIX.1-2008 อนุญาตให้ซิงเกิ้ล เพื่อทำเครื่องหมายจุดสิ้นสุดของตัวเลือกนอกเหนือจาก
การใช้งานปกติ "-−" โต้แย้งเพราะถือว่าการปฏิบัติแบบเก่าเป็นเช่นนั้น
แพร่หลาย. KornShell ใช้วิธีอื่นซึ่งจริงและมีประสิทธิภาพ
รหัสผู้ใช้/กลุ่มต้องตรงกันสำหรับเชลล์แบบโต้ตอบ พฤติกรรมนี้ได้รับอนุญาตโดยเฉพาะ
โดยปริมาณของ POSIX.1-2008 นี้
หมายเหตุ มีปัญหาอื่น ๆ กับสคริปต์ set-user-ID ที่ทั้งสองวิธี
อธิบายไว้ที่นี่ไม่สามารถแก้ไขได้
กระบวนการเริ่มต้นสำหรับไฟล์ประวัติสามารถขึ้นอยู่กับการเริ่มต้นระบบ
ไฟล์ โดยที่อาจมีคำสั่งที่ยึดการตั้งค่าของผู้ใช้ของ . ได้อย่างมีประสิทธิภาพ
ฮิสไฟล์ และ ฮิสต์ไซส์. ตัวอย่างเช่น คำสั่งนิยามฟังก์ชันจะถูกบันทึกไว้ใน
ไฟล์ประวัติ เว้นแต่ เซ็ต -o โนล็อก ตั้งค่าตัวเลือกแล้ว หากผู้ดูแลระบบรวม
คำจำกัดความของฟังก์ชันในไฟล์เริ่มต้นระบบบางไฟล์ที่เรียกก่อน ENV แฟ้มประวัติ
ไฟล์ถูกเตรียมใช้งานก่อนที่ผู้ใช้จะมีโอกาสมีอิทธิพลต่อคุณลักษณะของมัน ใน
เชลล์ประวัติบางตัว ไฟล์ประวัติจะเริ่มต้นหลังจาก ENV ไฟล์ได้รับ
ประมวลผล ดังนั้นจึงกำหนดการดำเนินการว่าการเปลี่ยนแปลงที่ทำกับ ฮิสไฟล์ หลังจาก
ไฟล์ประวัติได้รับการเตรียมใช้งานแล้วจะมีผล
ข้อความเริ่มต้นสำหรับข้อความต่างๆ MAIL-ข้อความที่เกี่ยวข้องไม่ระบุเพราะข้อความเหล่านี้
แตกต่างกันไปตามการใช้งาน ข้อความทั่วไปคือ:
"คุณ มี จดหมาย\n"
หรือ:
"คุณ มี ใหม่ จดหมาย\n"
เป็นสิ่งสำคัญที่คำอธิบายของการแก้ไขบรรทัดคำสั่งอ้างอิงถึงเชลล์เดียวกันเป็น
ว่าใน POSIX.1-2008 เพื่อให้ผู้ใช้แบบโต้ตอบสามารถเป็นโปรแกรมเมอร์แอปพลิเคชันโดยไม่ต้อง
ต้องจัดการกับความแตกต่างทางโปรแกรมในสภาพแวดล้อมทั้งสอง ยังเป็น
จำเป็นที่ชื่อยูทิลิตี้ sh ถูกระบุเพราะชื่อยูทิลิตี้ที่ชัดเจนนี้ก็เช่นกัน
หยั่งรากอย่างแน่นหนาในการปฏิบัติทางประวัติศาสตร์ของโปรแกรมแอปพลิเคชันเพื่อการเปลี่ยนแปลง
ได้รับการพิจารณาเพื่อมอบหมายข้อความวินิจฉัยเมื่อพยายามตั้งค่า vi-โหมด
บนเทอร์มินัลที่ไม่รองรับการแก้ไขบรรทัดคำสั่ง อย่างไรก็ตามมันไม่ใช่ประวัติศาสตร์
การปฏิบัติเพื่อให้เชลล์รับรู้เทอร์มินัลทุกประเภทและสามารถตรวจจับได้
ขั้วที่ไม่เหมาะสมในทุกกรณี การดำเนินการได้รับการสนับสนุนในการจัดหา
ในกรณีนี้เมื่อใดก็ตามที่เป็นไปได้ แทนที่จะปล่อยให้ผู้ใช้อยู่ในสถานะที่
คำสั่งแก้ไขทำงานไม่ถูกต้อง
ในข้อเสนอแรกๆ KornShell-derived emacs รวมโหมดการแก้ไขบรรทัดคำสั่ง
แม้ว่า emacs บรรณาธิการเองไม่ได้ ชุมชนของ emacs ผู้สนับสนุนก็ยืนกราน
ที่เต็ม emacs บรรณาธิการไม่ได้มาตรฐานเพราะกังวลว่าความพยายาม
การสร้างมาตรฐานสภาพแวดล้อมที่ทรงพลังนี้จะสนับสนุนให้ผู้ขายจัดส่งอย่างเคร่งครัด
เวอร์ชันที่สอดคล้องซึ่งขาดความสามารถในการขยายตามที่ชุมชนต้องการ ผู้เขียน
เป็นต้นฉบับ emacs โปรแกรมยังแสดงความปรารถนาที่จะละเว้นโปรแกรม นอกจากนี้ยังมี
เป็นระบบประวัติศาสตร์จำนวนหนึ่งที่ไม่รวมถึง emacsหรือรวมไว้โดยไม่มี
สนับสนุน แต่มีน้อยมากที่ไม่ได้รวมและสนับสนุน vi. เปลือก
emacs ในที่สุดโหมดการแก้ไขบรรทัดคำสั่งก็ถูกละเว้นเพราะเห็นได้ชัดว่า
เวอร์ชัน KornShell และตัวแก้ไขที่แจกจ่ายกับระบบ GNU ได้แยกความแตกต่างใน
ความเคารพบางอย่าง ผู้เขียน emacs ขอให้ POSIX emacs โหมดจะถูกลบ
หรือมีเงื่อนไขไม่ระบุจำนวนมาก แม้ว่าผู้เขียน KornShell
ตกลงที่จะพิจารณาการเปลี่ยนแปลงเพื่อให้เชลล์อยู่ในตำแหน่งที่นักพัฒนามาตรฐาน
ตัดสินใจเลื่อนกำหนดคุณสมบัติในขณะนั้น ในขณะนั้นถือว่าบรรจบกัน
ในคำจำกัดความที่ยอมรับได้จะเกิดขึ้นสำหรับร่างฉบับต่อไป แต่นั่นยังไม่เกิดขึ้น
และดูเหมือนจะไม่มีแรงผลักดันให้ทำเช่นนั้น ในกรณีใด ๆ การใช้งานมีอิสระที่จะ
เสนอโหมดการแก้ไขบรรทัดคำสั่งเพิ่มเติมตามรุ่นที่แน่นอนของตัวแก้ไขของพวกเขา
ผู้ใช้จะสบายใจที่สุดกับ
ข้อเสนอแรกมีรายการต่อไปนี้ใน vi Line การตัดต่อ สิ่งที่ใส่เข้าไป โหมด:
\ ถ้าตามด้วย ลบออก or ฆ่า อักขระนั้นให้ใส่อักขระนั้นลงใน
สายอินพุต มิฉะนั้น ตัวเองจะถูกแทรกเข้าไปในอินพุต
เส้น
อย่างไรก็ตาม นี่ไม่ใช่คุณสมบัติของ sh โหมดแทรกการแก้ไขบรรทัดคำสั่ง แต่หนึ่งใน
ไดรเวอร์บรรทัดเทอร์มินัลในอดีต การใช้งานที่สอดคล้องบางอย่างยังคงทำเช่นนี้ต่อไป
เมื่อ สติ สิบ ตั้งค่าสถานะแล้ว
ในเชลล์แบบโต้ตอบ SIGTERM จะถูกละเว้นดังนั้น ฆ่า 0 ไม่ฆ่าเปลือกและ
SIGINT ถูกจับได้อย่างนั้น รอ เป็นสิ่งที่ขัดจังหวะได้ หากเชลล์ไม่ละเว้น SIGTTIN
SIGTTOU และ SIGTSTP ส่งสัญญาณเมื่อมีการโต้ตอบและ -ม ตัวเลือกไม่มีผลบังคับใช้
สัญญาณเหล่านี้จะระงับเชลล์หากไม่ใช่ผู้นำเซสชัน ถ้าเป็นผู้นำเซสชัน
สัญญาณจะถูกละทิ้งหากจะหยุดกระบวนการตามที่ระบบกำหนด
ปริมาณอินเทอร์เฟซของ POSIX.1-2008, Section 2.4.3, สัญญาณ สถานะ สำหรับกระบวนการกำพร้า
กลุ่ม
อนาคต ลู่ทาง
ไม่
ใช้ shposix ออนไลน์โดยใช้บริการ onworks.net
 














