Kodokon kodokon.com

การอ่านไฟล์และการเปลี่ยนทิศทางเอาต์พุต

แสดงเนื้อหาของไฟล์ด้วย cat, head และ tail แล้วเก็บเอาต์พุตลงไฟล์

7 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

คุณไม่จำเป็นต้องเปิดเอดิเตอร์ทุกครั้งเพียงเพื่อชำเลืองดูไฟล์ คำสั่ง cat แสดงเนื้อหาของมันออกมาในเทอร์มินัลโดยตรง ชื่อของมันมาจาก concatenate ที่แปลว่า "ต่อกันเป็นแถว" เพราะมันแสดงหลายไฟล์เรียงต่อกันได้ด้วย มันคือเครื่องมือในอุดมคติสำหรับไฟล์เล็ก ๆ: อย่างมากก็ไม่กี่สิบบรรทัด

BASH
yoann@laptop:~/my-project$ cat shopping.txt
Bread
Cheese
Tomatoes

yoann@laptop:~/my-project$ cat shopping.txt notes.txt
Bread
Cheese
Tomatoes
Do not forget the Saturday market
cat กับไฟล์เดียว แล้วก็กับสองไฟล์ที่แสดงเรียงต่อกัน

กับไฟล์ที่มีหนึ่งหมื่นบรรทัด cat จะทำให้หน้าจอเลื่อนอยู่สิบวินาที และคุณจะได้เห็นแค่ตอนท้ายเท่านั้น มีอีกสองคำสั่งที่แม่นยำกว่า: head แสดง ตอนต้น ของไฟล์ ส่วน tail แสดง ตอนท้าย ทั้งสองแสดง 10 บรรทัดโดยค่าเริ่มต้น และออปชัน -n ให้คุณเลือกจำนวนเองได้ tail มีพลังพิเศษเมื่อใช้ออปชัน -f (follow): มันจะเปิดค้างไว้และแสดงบรรทัดใหม่ ๆ ทันทีที่มันเข้ามา นี่คือวิธีที่เราเฝ้าดูล็อกของเซิร์ฟเวอร์แบบสด ๆ

BASH
head server.log
head -n 5 server.log
tail -n 20 server.log
tail -f server.log
ตอนต้น, 5 บรรทัดแรก, 20 บรรทัดสุดท้าย แล้วก็ตอนท้ายแบบสด ๆ (Ctrl + C เพื่อออก)

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

BASH
yoann@laptop:~/my-project$ echo "My first line" > notes.txt
yoann@laptop:~/my-project$ echo "My second line" >> notes.txt
yoann@laptop:~/my-project$ cat notes.txt
My first line
My second line
yoann@laptop:~/my-project$ ls -l > inventory.txt
yoann@laptop:~/my-project$ wc -l inventory.txt
7 inventory.txt
สร้างไฟล์ ต่อท้ายอีกบรรทัด ตรวจสอบ เก็บเอาต์พุตแล้วนับบรรทัดของมัน

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. คำสั่ง cat มีไว้ทำอะไร?
    • แสดงเนื้อหาของไฟล์ในเทอร์มินัล
    • สร้างไฟล์เปล่า
    • ลบไฟล์
    • นับจำนวนบรรทัดในไฟล์
  2. อะไรคือความแตกต่างระหว่าง > กับ >>?
    • > ต่อท้าย ส่วน >> เขียนทับไฟล์
    • > เขียนทับไฟล์ ส่วน >> ต่อท้าย
    • ไม่มีความแตกต่าง ทั้งคู่เขียนลงไฟล์
  3. คุณจะแสดง 20 บรรทัดสุดท้ายของไฟล์ server.log ได้อย่างไร?
    • head -n 20 server.log
    • cat -n 20 server.log
    • tail -n 20 server.log