ชื่อแปลก“ที่นี่เอกสาร” ให้คุณใช้อินพุต / ออกเปลี่ยนเส้นทางภายในสคริปต์ทุบตีบน Linux พวกเขากำลังเป็นวิธีที่ดีในการทำงานโดยอัตโนมัติคำสั่งที่คุณต้องทำงานบนคอมพิวเตอร์ระยะไกล
ที่นี่เอกสาร
คำสั่งจำนวนมากในลินุกซ์มีสองหรือสามชื่อตัวอักษร นี่คือส่วนหนึ่งในสิ่งที่ก่อให้เกิดความคิดที่ว่าลินุกซ์เป็นเรื่องยากที่จะเรียนรู้และเต็มรูปแบบของคำสั่งลับ แต่หนึ่งในชื่อที่แปลกประหลาดในลินุกซ์ไม่ได้เป็นหนึ่งในคนที่สั้นลับ “นี่คือเอกสาร” ไม่ได้เอกสารและมันไม่ได้จริงๆล้างสิ่งที่“ที่นี่” หมายถึงการอย่างใดอย่างหนึ่ง
พวกเขาจะสร้างค่อนข้างชัดเจน แต่พวกเขามีประโยชน์ ของหลักสูตรนี้คือลินุกซ์จึงมีมากกว่าหนึ่งวิธีที่จะผิวแมว บางส่วนของการทำงานโดยที่นี่เอกสารสามารถทำซ้ำในรูปแบบอื่น บรรดาวิธีการอื่นที่มักจะมีความซับซ้อนมากขึ้น ในการเขียนโปรแกรมและการเขียนสคริปต์“ที่มีความซับซ้อนมากขึ้น” นอกจากนี้ยังหมายถึง“มีแนวโน้มมากขึ้นที่จะโรคจิต” และรหัสของคุณยากที่จะรักษา
ที่ไหนที่นี่จริงๆเอกสาร Excel อยู่ในระบบอัตโนมัติของคำสั่งที่คุณต้องการส่งไปยังคอมพิวเตอร์ระยะไกลจากการเชื่อมต่อที่จัดตั้งขึ้นจากภายในสคริปต์ ทำให้การเชื่อมต่อเป็นเรื่องง่าย แต่เมื่อการเชื่อมต่อได้รับการทำอย่างไรคุณ“ปั๊ม” คำสั่งของคุณจากสคริปต์ของคุณลงในเปลือกบนคอมพิวเตอร์ระยะไกลหรือไม่ นี่คือเอกสารที่ช่วยให้คุณสามารถทำเช่นนั้นได้มากเพียง
หลักการพื้นฐานของเอกสารที่นี่
การเป็นตัวแทนของสำนวนที่นี่มีลักษณะเอกสารเช่นนี้
COMMAND & lt; & lt; limit_string . . ข้อความ ข้อมูล ตัวแปร . . limit_string
-
สั่งการ
: นี้จะมีคำสั่งใด ๆ ลินุกซ์ที่รับข้อมูลที่ถูกเปลี่ยนเส้นทาง หมายเหตุที่
ก้องสั่งการ ไม่ได้รับข้อมูลที่ถูกเปลี่ยนเส้นทาง . หากคุณต้องการที่จะเขียนถึงหน้าจอคุณสามารถใช้แมวสั่งการ, ซึ่งไม่ . - & lt; & lt; : ผู้ประกอบการเปลี่ยนเส้นทาง
- limit_string : นี่คือฉลาก มันอาจจะเป็นสิ่งที่คุณต้องการตราบเท่าที่มันไม่ปรากฏในรายการของข้อมูลที่คุณกำลังเปลี่ยนเส้นทางลงในคำสั่ง มันถูกใช้เพื่อทำเครื่องหมายจุดสิ้นสุดของข้อความข้อมูลและรายชื่อตัวแปร
- รายการข้อมูล : รายการของข้อมูลที่จะป้อนคำสั่ง มันสามารถมีคำสั่งข้อความและตัวแปร เนื้อหาของรายการข้อมูลจะถูกป้อนเข้าคำสั่งหนึ่งบรรทัดในเวลาจนกว่า _limit_string จะพบ
คุณอาจจะดูตัวอย่างจากที่นี่เอกสารที่ใช้“EOF” เป็นสตริงขีด จำกัด เราไม่ได้เข้าข้างวิธีการที่ มันทำงานได้ แต่“EOF” หมายถึง“จุดสิ้นสุดของแฟ้ม.” นอกเหนือจากกรณีที่หายากที่เอกสารที่บ้านเป็นสิ่งสุดท้ายในแฟ้มสคริปต์“EOF” ถูกนำมาใช้อย่างไม่ถูกต้อง
มันจะทำให้สคริปของคุณมากอ่านได้มากขึ้นถ้าคุณใช้สตริงขีด จำกัด ที่หมายถึงสิ่งที่คุณทำ หากคุณกำลังส่งชุดของคำสั่งไปยังเครื่องคอมพิวเตอร์จากระยะไกลผ่าน
Secure Shell
(SSH), สตริงขีด จำกัด ที่เรียกว่าบางสิ่งบางอย่างเช่น“_remote_commands” จะทำให้ความรู้สึกที่สมบูรณ์แบบ คุณไม่จำเป็นต้องเริ่มต้นพวกเขาด้วยการขีดเส้นใต้“
_
" อักขระ. เราทำอย่างนั้นเพราะมันเครื่องหมายพวกเขาเป็นบางสิ่งบางอย่างออกจากสามัญในสคริปต์ของคุณ
ตัวอย่างง่ายๆ
คุณสามารถใช้ที่นี่เอกสารในบรรทัดคำสั่งและในสคริปต์ เมื่อคุณพิมพ์ต่อไปนี้ในหน้าต่าง terminal, คุณจะเห็น“
& gt;
” สายต่อเนื่องแจ้งให้ทุกครั้งที่คุณกดปุ่ม ‘Enter.’ เมื่อคุณพิมพ์“_end_of_text สตริง” ขีด จำกัด และกด“Enter” รายการของเว็บไซต์ที่ถูกส่งไปยัง
แมว,
และพวกเขาจะแสดงในหน้าต่าง terminal
แมว & lt; & lt; _END_OF_TEXT geek วิธีการ รีวิว Geek LifeSavvy CloudSavvy ไอที MindBounce _END_OF_TEXT
ที่ไม่คุ้มค่ามากที่สุดของการออกกำลังกาย แต่มันก็แสดงให้เห็นว่าไม่มีอะไรที่จะถูกส่งไปที่คำสั่งจนรายชื่อทั้งหมดของข้อมูลจะถูกรวบรวมและสตริงวงเงินที่จะพบ NS
แมว
คำสั่งไม่ได้รับการป้อนข้อมูลใด ๆ จนกว่าคุณจะป้อนขีด จำกัด สตริง“_end_of_text” และกด“Enter”
เราสามารถทำสิ่งเดียวกันในสคริปต์ พิมพ์หรือคัดลอกตัวอย่างนี้ลงในโปรแกรมแก้ไขการบันทึกแฟ้มเป็น“heredoc-1.sh” และใกล้บรรณาธิการ
#! / bin / bash CAT & LT; & lt; "_end_of_text" ชื่อผู้ใช้ของคุณคือ: $ (WHOAMI) ไดเรกทอรีการทำงานปัจจุบันของคุณคือ: $ pwd รุ่น Bash ของคุณคือ: $ bash_version _END_OF_TEXT
ในขณะที่คุณติดตามบทความนี้ทุกครั้งที่คุณสร้างสคริปต์คุณจะต้อง
ทำให้มันสามารถทำงานได้
ก่อนที่มันจะทำงาน ในแต่ละกรณี,
ใช้
chmod
สั่งการ
. แทนที่ชื่อของสคริปต์ในแต่ละตัวอย่างสำหรับชื่อสคริปต์ที่ใช้ที่นี่
chmod + x heredoc-1.sh
สคริปต์นี้มีสองตัวแปรสภาพแวดล้อม
$ pwd
และ
$ bash_version
. ชื่อตัวแปรสภาพแวดล้อมจะถูกแทนที่ด้วยค่าข้อมูลของพวกเขา - ไดเรกทอรีการทำงานปัจจุบันและรุ่นของ Bash-เมื่อสคริปต์ถูกดำเนินการ
สคริปต์ยังใช้
การทดแทนคำสั่ง
บน
NS
ฉันเป็นใคร
สั่งการ
. ชื่อของคำสั่งจะถูกแทนที่ด้วยเอาต์พุตของตัวเอง เอาต์พุตจากสคริปต์ทั้งหมดถูกเขียนไปยังหน้าต่างเทอร์มินัลโดยคำสั่ง cat เราเรียกใช้สคริปต์ด้วยการโทรตามชื่อ:
./ heredoc-1.sh
หากคุณแก้ไขสคริปต์และสรุปสตริงขีด จำกัด ในบรรทัดแรกของเอกสารที่นี่ในเครื่องหมายอัญประกาศ "
"
"รายการข้อมูลจะถูกส่งผ่านไปยังคำสั่ง document document ที่นี่ Verbatim ชื่อตัวแปรจะปรากฏขึ้นแทนค่าตัวแปรและการทดแทนคำสั่งจะไม่เกิดขึ้น
#! / bin / bash cat & lt; & lt; - "_end_of_text" ชื่อผู้ใช้ของคุณคือ: $ (WHOAMI) ไดเรกทอรีการทำงานปัจจุบันของคุณคือ: $ pwd รุ่น Bash ของคุณคือ: $ bash_version _END_OF_TEXT
จัดการอักขระแท็บ
ตามค่าเริ่มต้นอักขระแท็บในรายการข้อมูลของคุณจะถูกเก็บไว้และเขียนไปยังหน้าต่างเทอร์มินัล คัดลอกและบันทึกตัวอย่างนี้เป็น "Heredoc-2.sh" ทำให้สามารถใช้งานได้โดยใช้
chmod
สั่งการ. แก้ไขบรรทัดที่เยื้องเพื่อให้แน่ใจว่ามีอักขระแท็บหนึ่งหรือสองตัวที่จุดเริ่มต้นของบรรทัดแทนที่จะเป็นชุดของช่องว่าง
#! / bin / bash
CAT & LT; & lt; _END_OF_TEXT
ชื่อผู้ใช้ของคุณคือ: $ (WHOAMI)
ไดเรกทอรีการทำงานปัจจุบันของคุณคือ: $ pwd
รุ่น Bash ของคุณคือ: $ bash_version
_END_OF_TEXT
./ heredoc-2.sh
แท็บถูกเขียนไปยังหน้าต่างเทอร์มินัล
โดยการเพิ่มเส้นประ "
-
"ไปยังผู้ให้บริการการเปลี่ยนเส้นทางเอกสารที่นี่จะเพิกเฉยต่อตัวละครแท็บชั้นนำ บันทึกตัวอย่างนี้เป็น "Heredoc-3.sh" และทำให้มันสามารถทำงานได้
#! / bin / bash
CAT & LT; & lt; - _END_OF_TEXT
ชื่อผู้ใช้ของคุณคือ: $ (WHOAMI)
ไดเรกทอรีการทำงานปัจจุบันของคุณคือ: $ pwd
รุ่น Bash ของคุณคือ: $ bash_version
_END_OF_TEXT
./ heredoc-3.sh
แท็บจะถูกละเว้น นี่อาจดูไม่สำคัญ แต่มันเป็นวิธีที่เรียบร้อยในการรับมือกับแท็บชั้นนำเนื่องจากส่วนที่เยื้องของสคริปต์
ลูปและโครงสร้างเชิงตรรกะอื่น ๆ มักจะเยื้อง หากเอกสารที่นี่มีอยู่ในส่วนที่เยื้องของสคริปต์โดยใช้เส้นประ "
-
"ด้วยตัวดำเนินการเปลี่ยนเส้นทางลบปัญหาการจัดรูปแบบที่เกิดจากอักขระแท็บชั้นนำ
#! / bin / bash ถ้าเป็นจริง; แล้ว cat & lt; & lt; - _limit_string บรรทัดที่ 1 พร้อมแท็บชั้นนำ บรรทัดที่ 2 พร้อมแท็บชั้นนำ บรรทัดที่ 3 พร้อมแท็บชั้นนำ _limit_string fi
เปลี่ยนเส้นทางไปยังไฟล์
เอาต์พุตจากคำสั่งที่ใช้กับเอกสารที่นี่สามารถเปลี่ยนเส้นทางไปยังไฟล์ได้ ใช้ "
& gt;
"(สร้างไฟล์) หรือ"
& gt; & gt;
"(สร้างไฟล์หากไม่มีอยู่ต่อท้ายไฟล์หรือไม่) ตัวดำเนินการเปลี่ยนเส้นทาง
หลังจาก
ขีด จำกัด สตริงในบรรทัดแรกของเอกสารที่นี่
สคริปต์นี้คือ "Heredoc-4.sh" มันจะเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ข้อความที่เรียกว่า "Session.txt"
#! / bin / bash CAT & LT; & lt; _END_OF_TEXT & GT; session.txt ชื่อผู้ใช้ของคุณคือ: $ (WHOAMI) ไดเรกทอรีการทำงานปัจจุบันของคุณคือ: $ pwd รุ่น Bash ของคุณคือ: $ bash_version _END_OF_TEXT
./ heredoc-4.sh
Cat Session.Text
วางเอาต์พุตไปยังคำสั่งอื่น
เอาท์พุทจากคำสั่งที่ใช้ในเอกสารที่นี่สามารถส่งเป็นอินพุตไปยังคำสั่งอื่น ใช้
ท่อ "
|
"ผู้ประกอบการ
หลังจาก
ขีด จำกัด สตริงในบรรทัดแรกของเอกสารที่นี่ เรากำลังจะไปที่ท่อส่งออกจากคำสั่งเอกสารที่นี่
แมว
, เข้าไปข้างใน
sed
. เราต้องการ
ทดแทนทั้งหมดที่เกิดขึ้น
ของตัวอักษร "A" กับตัวอักษร "E"
ตั้งชื่อสคริปต์นี้ "heredoc-5.sh"
#! / bin / bash CAT & LT; & lt; _END_OF_TEXT | SED 'S / A / E / G' ยังไง ถึง กัว _END_OF_TEXT
./ heredoc-5.sh
"Gaak" ได้รับการแก้ไขให้เป็น "Geek"
การส่งพารามิเตอร์ไปยังฟังก์ชั่น
คำสั่งที่ใช้กับเอกสารที่นี่สามารถเป็นฟังก์ชั่นในสคริปต์
สคริปต์นี้ผ่านข้อมูลยานพาหนะเข้ากับฟังก์ชั่น ฟังก์ชั่นอ่านข้อมูลราวกับว่ามันถูกพิมพ์ในโดยผู้ใช้ ค่าของตัวแปรจะถูกพิมพ์แล้ว บันทึกสคริปต์นี้เป็น "heredoc-6.sh"
#! / bin / bash
# ฟังก์ชัน SET_CAR_DETAILS ()
SET_CAR_DETAILS ()
{
อ่านทำ
อ่านโมเดล
อ่าน new_used
อ่าน delivery_collect
อ่านสถานที่
อ่านราคา
}
# เอกสารที่นี่ที่ผ่านข้อมูลไปยัง set_car_details ()
set_car_details & lt; & lt; _mars_rover_data
นาซ่า
ความเพียร Rover
ใช้แล้ว
เก็บรวบรวม
ดาวอังคาร (ยาว, ลาด) 77.451865,18.445161
2.2 พันล้าน
_mars_rover_data
# ดึงรายละเอียดยานพาหนะ
Echo "ทำ: $ ทำ"
Echo "รุ่น: $ model"
echo "ใหม่หรือใช้แล้ว: $ new_used"
echo "การจัดส่งหรือคอลเลกชัน: $ delivery_collect"
echo "ที่ตั้ง: $ location"
Echo "ราคา \ $: ราคา $"
./ heredoc-6.sh
รายละเอียดยานพาหนะถูกเขียนไปยังหน้าต่างเทอร์มินัล
การสร้างและส่งอีเมล
เราสามารถใช้เอกสาร A ที่นี่เพื่อเขียนและส่งอีเมล โปรดทราบว่าเราสามารถส่งพารามิเตอร์ไปยังคำสั่งที่ด้านหน้าของตัวดำเนินการเปลี่ยนเส้นทาง คือ
การใช้ Linux
จดหมาย
สั่งการ
ถึง
ส่งอีเมลผ่านระบบเมลท้องถิ่น
ไปยังบัญชีผู้ใช้ที่เรียกว่า "เดฟ" NS
-NS
ตัวเลือก (หัวเรื่อง) ช่วยให้เราระบุหัวเรื่องสำหรับอีเมล
ตัวอย่างนี้แบบฟอร์มสคริปต์ "heredoc-7.sh."
#! / bin / bash บทความ = "เอกสารที่นี่" Mail -s 'สถานะเวิร์กโหลด' Dave & LT; & lt; _project_report ชื่อผู้ใช้: $ (WHOAMI) เสร็จสิ้นการมอบหมาย: บทความ: $ บทความ _project_report
./ heredoc-7.sh
ไม่มีเอาต์พุตที่มองเห็นได้จากสคริปต์นี้ แต่เมื่อเราตรวจสอบอีเมลของเราเราจะเห็นว่าอีเมลถูกจัดส่งส่งและส่งมอบ
จดหมาย
ใช้เอกสารที่นี่กับ SSH
เอกสารที่นี่เป็นวิธีที่ทรงพลังและสะดวกในการดำเนินการคำสั่งบางคำในคอมพิวเตอร์ระยะไกลเมื่อมีการสร้างการเชื่อมต่อ SSH หากคุณตั้งค่าคีย์ SSH ระหว่างคอมพิวเตอร์สองเครื่องกระบวนการเข้าสู่ระบบจะเป็นไปโดยอัตโนมัติอย่างสมบูรณ์ ในตัวอย่างที่รวดเร็วและสกปรกนี้คุณจะได้รับแจ้งให้ใช้รหัสผ่านสำหรับบัญชีผู้ใช้บนคอมพิวเตอร์ระยะไกล
สคริปต์นี้คือ "heredoc-8.sh" เราจะเชื่อมต่อกับคอมพิวเตอร์ระยะไกลที่เรียกว่า "Remote-PC" บัญชีผู้ใช้เรียกว่า "Dave" เรากำลังใช้
-NS
(ปิดใช้งานตัวเลือกการจัดสรร Pseudo-Terminal) เนื่องจากเราไม่จำเป็นต้องมีเทอร์มินัลแบบโต้ตอบที่จะมอบหมายให้เรา
ในส่วน "ทำบางอย่างที่นี่" ของสคริปต์เราสามารถส่งรายการคำสั่งได้และสิ่งเหล่านี้จะถูกดำเนินการบนคอมพิวเตอร์ระยะไกล แน่นอนคุณสามารถเรียกสคริปต์ที่อยู่ในคอมพิวเตอร์ระยะไกล สคริปต์ระยะไกลสามารถเก็บคำสั่งและรูทีนทั้งหมดที่คุณต้องการดำเนินการได้
ทั้งหมดที่ Script-Heredoc-8.Sh- กำลังจะทำคืออัปเดตการเชื่อมต่อเข้าสู่ระบบคอมพิวเตอร์ระยะไกล บัญชีผู้ใช้และตราประทับเวลาและวันที่ถูกบันทึกลงในไฟล์ข้อความ
#! / bin / bash SSH -T [email protected] & lt; & lt; _remote_commands # ทำงานที่นี่ # อัปเดตบันทึกการเชื่อมต่อ Echo $ ผู้ใช้ "-" $ (วันที่) & gt; & gt; /home/dave/conn_log/script.log _remote_commands
เมื่อเรารันคำสั่งเราจะได้รับพร้อมท์สำหรับรหัสผ่านสำหรับบัญชีใน ระยะไกล คอมพิวเตอร์.
./ heredoc-8.sh
ข้อมูลบางอย่างเกี่ยวกับคอมพิวเตอร์ระยะไกลจะปรากฏขึ้นและเราจะกลับไปที่พรอมต์คำสั่ง
บน
ระยะไกล
คอมพิวเตอร์เราสามารถใช้
แมว
วิธีตรวจสอบบันทึกการเชื่อมต่อ:
Cat Conn_log / Script.log
การเชื่อมต่อแต่ละรายการมีการระบุไว้สำหรับเรา
ที่เกี่ยวข้อง: วิธีการสร้างและติดตั้งปุ่ม SSH จากเปลือก Linux
ชื่อแปลก ๆ คุณสมบัติที่เรียบร้อย
เอกสารที่นี่มีความแปลกประหลาด แต่ทรงพลังโดยเฉพาะเมื่อใช้ในการส่งคำสั่งไปยังคอมพิวเตอร์ระยะไกล มันเป็นเรื่องง่ายที่จะสคริปต์รูทีนสำรองโดยใช้
rsync
. สคริปต์สามารถเชื่อมต่อกับคอมพิวเตอร์ระยะไกลตรวจสอบพื้นที่เก็บข้อมูลที่เหลือและส่งอีเมลแจ้งเตือนหากพื้นที่เริ่มต่ำ
ที่เกี่ยวข้อง: วิธีสำรองระบบ Linux ของคุณด้วย Rsync