การเพิ่ม SH ทำอะไร


10

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

อันนี้ใช้ได้สำหรับฉันตั้งแต่สร้างไฟล์ปฏิบัติการคลิกไฟล์และรัน .. เพียงบอกว่าต้องมีการเข้าถึงรูท

sudo sh vmwareplayer.txt (เปลี่ยนชื่อเป็นสั้นกว่า)

ยังไงก็เถอะฉันรู้ว่าsudoทำอะไร แต่จะshทำอย่างไร ไม่ว่าจะเป็น "vmwareplayer.txt ไม่พบ" และสำหรับไฟล์มัดทำไมมันลงท้ายด้วย. txt


มันเป็นล่ามภาษา
Tachyons

@Tachyons หากคุณรู้คำตอบของคำถามให้อธิบายอย่างละเอียดและโพสต์เป็นคำตอบ! :)
อัลวา

ดูคำถามที่เกี่ยวข้องพร้อมคำตอบที่อธิบายอย่างละเอียดเกี่ยวกับล่าม (เช่น sh, bash) และ shebangs เป็นต้น

1
@Mik คำถามนี้ไม่เหมือนกัน นี่คือการถามว่าshคำสั่งที่เรียกใช้สคริปต์ทำอะไร คำถามที่เป็นเรื่องเกี่ยวกับวิธี#!การทำงานในแฟ้มสคริปต์ แตกต่างกันอย่างสิ้นเชิง.
Eliah Kagan

@EliahKagan ใช่ฉันอาจจะเร่งด่วนที่จะอ้างว่าซ้ำซ้อน: ฉันควรจะใส่ 'ที่เกี่ยวข้อง แต่ไม่ซ้ำกัน' เมื่ออ้างถึงคำตอบอื่น ๆ คุณพูดถูก หากคุณต้องการขอให้ผู้ดำเนินการเปิดใหม่อีกครั้งไม่เป็นไร ฉันโหวตให้เปิดใหม่แล้ว

คำตอบ:


16

sh ย่อมาจาก "shell" และเชลล์เป็นตัวเก่า, Unix เช่นล่ามบรรทัดคำสั่ง ล่ามเป็นโปรแกรมที่รันคำสั่งเฉพาะที่เขียนในการเขียนโปรแกรมหรือภาษาสคริปต์ โดยพื้นฐานแล้วคุณพูดว่า "Execute ไฟล์นั้นสำหรับฉัน"

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


5

ใน Ubuntu, shหรือเพียงแค่ชี้ไปที่/bin/sh ควรรันล่ามคำสั่งเริ่มต้นซึ่งสำหรับ Ubuntu 1อ้างถึงเชลล์ Debian Almquistdashshdash dash

เชลล์เป็นตัวแปลบรรทัดคำสั่งสำหรับระบบ มีหลายเปลือกหอยอื่น ๆ เช่นมีbash, csh, zshฯลฯ นี่คือข้อความที่ตัดตอนมาสั้น ๆ จากหน้าคนของdash:

 The shell is a command that reads lines from either a file or the termi‐
 nal, interprets them, and generally executes other commands.  It is the
 program that is running when a user logs into the system (although a user
 can select a different shell with the chsh(1) command).  The shell imple‐
 ments a language that has flow control constructs, a macro facility that
 provides a variety of features in addition to data storage, along with
 built in history and line editing capabilities.  It incorporates many
 features to aid interactive use and has the advantage that the interpre‐
 tative language is common to both interactive and non-interactive use
 (shell scripts).  That is, commands can be typed directly to the running
 shell or can be put into a file and the file can be executed directly by
 the shell.

มีบทเรียนมากมายเกี่ยวกับเปลือก Linux คุณสามารถเริ่มต้นด้วยบทความ Wikipediaนี้

มาถึงคำถามของคุณถ้าคุณเขียนsh file, dashรันfileสำหรับคุณ


มันเป็นคำอธิบายที่ดีว่า sh คืออะไร แต่ไม่ใช่สิ่งที่ทำในคำถามเฉพาะด้านบน
NilsB

เพิ่มข้อมูลเพิ่มเติมแล้วมันควรจะเพียงพอแล้ว
จุด

1

เพียงแค่ความเห็น:

sudoรันคำสั่งด้วยrootสิทธิ์พิเศษ เมื่อคุณโทรsudo vmwareplayer.txtซึ่งหมายถึงอย่างชัดเจน "รันคำสั่ง vmwareplayer.txt พร้อมการเข้าถึงรูท" และล้มเหลวเนื่องจากไม่มีโปรแกรมดังกล่าว

sudo sh commandหมายถึง "ดำเนินการsh commandด้วยสิทธิ์พิเศษ"

และsh commandจะดำเนินการคำสั่งภายใต้เชลล์เป้าหมาย

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

ในขณะเดียวกันจำไว้ว่าmanเป็นเพื่อนที่ดีที่สุดของคุณ


1

ฉันเชื่อว่าไม่มีผู้ตอบก่อนหน้านี้ตอบคำถามที่คุณถาม G. จริง ๆ ดังนั้นฉันจะลองดู การแทรกซึมshเมื่อเรียกใช้งานโปรแกรมตามที่คุณกล่าวถึงจะเรียกใช้งานโปรแกรมในsubshell แบบไม่โต้ตอบ เชลล์ที่ไม่มีการโต้ตอบจะทำงานแตกต่างกัน (เช่นการเริ่มต้น ) จากเชลล์เชิงโต้ตอบมาตรฐานที่คุณใช้เมื่อคุณรันโปรแกรม

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


0

shยูทิลิตี้เป็นล่ามภาษาคำสั่ง / คำสั่งที่คำสั่งรันอ่านจากสตริงบรรทัดคำสั่งเข้ามาตรฐานหรือแฟ้มที่ระบุ แอปพลิเคชันช่วยให้มั่นใจว่าคำสั่งที่จะดำเนินการจะแสดงเป็นภาษาที่อธิบายไว้ในภาษาคำสั่งเชลล์

ตัวอย่างเช่น:

ต่อไปนี้ดำเนินการคำสั่งเชลล์จากสตริง: sh -c "cat myfile.txt" เช่นรันคำสั่ง -cat myfile.txt

อ้างถึงลิงค์ต่อไปนี้สำหรับคำอธิบายในเชิงลึก: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html

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