ค้นหาเว็บไซต์

ซีรี่ส์ RHCSA: วิธีการจัดการไฟล์และไดเร็กทอรี - ตอนที่ 2


ในบทความนี้ RHCSA ส่วนที่ 2: การจัดการไฟล์และไดเร็กทอรี เราจะทบทวนทักษะที่จำเป็นบางประการที่จำเป็นในงานประจำวันของผู้ดูแลระบบ

สร้าง ลบ คัดลอก และย้ายไฟล์และไดเร็กทอรี

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

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

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

และ rm [ชื่อไฟล์] เพื่อลบออก

สำหรับไดเร็กทอรี คุณสามารถสร้างไดเร็กทอรีภายในพาธที่มีอยู่ด้วย mkdir [directory] หรือสร้างพาธแบบเต็มด้วย mkdir -p [/full/path/to/directory]

เมื่อต้องการลบไดเร็กทอรี คุณต้องแน่ใจว่าไดเร็กทอรีว่างก่อนที่จะออกคำสั่ง rmdir [directory] หรือใช้คำสั่งที่มีประสิทธิภาพมากกว่า (จัดการด้วยความระมัดระวัง!) rm -rf [ไดเร็กทอรี]. ตัวเลือกสุดท้ายนี้จะบังคับให้ลบ [directory] และเนื้อหาทั้งหมดออกแบบวนซ้ำ ดังนั้นคุณต้องยอมรับความเสี่ยงในการใช้งานเอง

การเปลี่ยนเส้นทางอินพุตและเอาต์พุตและการวางท่อ

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

เพื่อทำความเข้าใจแนวคิดที่สำคัญทั้งสองนี้ อันดับแรกเราต้องเข้าใจสตรีม (หรือลำดับ) I/O (อินพุตและเอาท์พุต) ที่สำคัญที่สุดสามประเภท ซึ่งจริงๆ แล้วเป็นไฟล์พิเศษ ในความหมาย *nix

  1. อินพุตมาตรฐาน (หรือที่เรียกว่า stdin) จะแนบไปกับคีย์บอร์ดโดยค่าเริ่มต้น กล่าวอีกนัยหนึ่ง แป้นพิมพ์เป็นอุปกรณ์อินพุตมาตรฐานในการป้อนคำสั่งไปยังบรรทัดคำสั่ง
  2. เอาต์พุตมาตรฐาน (หรือที่เรียกว่า stdout) จะติดอยู่กับหน้าจอโดยค่าเริ่มต้น ซึ่งเป็นอุปกรณ์ที่ "รับ" เอาต์พุตของคำสั่งและแสดงผลบนหน้าจอ
  3. ข้อผิดพลาดมาตรฐาน (หรือที่เรียกว่า stderr) คือตำแหน่งที่ข้อความสถานะของคำสั่งถูกส่งไปโดยค่าเริ่มต้น ซึ่งก็คือหน้าจอด้วย

ในตัวอย่างต่อไปนี้ เอาต์พุตของ ls /var จะถูกส่งไปยัง stdout (หน้าจอ) รวมถึงผลลัพธ์ของ ls /tecmint . แต่ในกรณีหลัง มันคือ stderr ที่แสดง

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

หากต้องการเปลี่ยนเส้นทาง stdin (fd 0), stdout (fd 1) หรือ stderr (fd 2) ให้ใช้ตัวดำเนินการต่อไปนี้

Redirection Operator

เอฟเฟกต์

>

เปลี่ยนเส้นทางเอาต์พุตมาตรฐานไปยังไฟล์ที่มีเอาต์พุตมาตรฐาน หากมีไฟล์ปลายทางอยู่ ไฟล์นั้นจะถูกเขียนทับ

>>

ผนวกเอาต์พุตมาตรฐานเข้ากับไฟล์

2>

เปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานไปยังไฟล์ที่มีเอาต์พุตมาตรฐาน หากมีไฟล์ปลายทางอยู่ ไฟล์นั้นจะถูกเขียนทับ

2>>

เพิ่มข้อผิดพลาดมาตรฐานต่อท้ายไฟล์ที่มีอยู่

&>

เปลี่ยนเส้นทางทั้งเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยังไฟล์ หากมีไฟล์ที่ระบุอยู่ ไฟล์นั้นจะถูกเขียนทับ

<

ใช้ไฟล์ที่ระบุเป็นอินพุตมาตรฐาน

<>

ไฟล์ที่ระบุใช้สำหรับทั้งอินพุตมาตรฐานและเอาต์พุตมาตรฐาน

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

จดจำ:

  1. การเปลี่ยนเส้นทาง ใช้เพื่อส่งเอาต์พุตของคำสั่งไปยังไฟล์ หรือเพื่อส่งไฟล์เป็นอินพุตไปยังคำสั่ง
  2. Pipelining ใช้เพื่อส่งเอาต์พุตของคำสั่งไปยังคำสั่งอื่นเป็นอินพุต

ตัวอย่างของการเปลี่ยนเส้นทางและการวางท่อ

ตัวอย่างที่ 1: การเปลี่ยนเส้นทางเอาต์พุตของคำสั่งไปยังไฟล์

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

ls -1 /var/mail > mail.txt

ตัวอย่างที่ 2: การเปลี่ยนเส้นทางทั้ง stdout และ stderr เป็น /dev/null

ในกรณีที่เราต้องการป้องกันไม่ให้ทั้ง stdout และ stderr แสดงบนหน้าจอ เราสามารถเปลี่ยนเส้นทางตัวอธิบายไฟล์ทั้งสองไปที่ /dev/null โปรดสังเกตการเปลี่ยนแปลงของเอาต์พุตเมื่อมีการใช้การเปลี่ยนเส้นทางสำหรับคำสั่งเดียวกัน

ls /var /tecmint
ls /var/ /tecmint &> /dev/null

ตัวอย่างที่ 3: การใช้ไฟล์เป็นอินพุตของคำสั่ง

ในขณะที่ไวยากรณ์คลาสสิกของคำสั่ง cat เป็นดังนี้

cat [file(s)]

คุณยังสามารถส่งไฟล์เป็นอินพุตได้โดยใช้ตัวดำเนินการเปลี่ยนเส้นทางที่ถูกต้อง

cat < mail.txt

ตัวอย่างที่ 4: การส่งเอาต์พุตของคำสั่งเป็นอินพุตไปยังอีกคำสั่งหนึ่ง

หากคุณมีรายการไดเร็กทอรีหรือกระบวนการขนาดใหญ่ และต้องการค้นหาไฟล์หรือกระบวนการที่ต้องการได้อย่างรวดเร็ว คุณจะต้องส่งรายการไปยัง grep

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

ps -ef | grep apache | grep -v grep