Unix / Linux - การจัดการไฟล์

ในบทนี้เราจะพูดถึงรายละเอียดเกี่ยวกับการจัดการไฟล์ใน Unix ข้อมูลทั้งหมดใน Unix จัดเป็นไฟล์ ไฟล์ทั้งหมดจะถูกจัดเป็นไดเร็กทอรี ไดเร็กทอรีเหล่านี้จัดเป็นโครงสร้างแบบต้นไม้ที่เรียกว่าระบบไฟล์

เมื่อคุณทำงานกับ Unix ไม่ทางใดก็ทางหนึ่งคุณใช้เวลาส่วนใหญ่ในการทำงานกับไฟล์ บทช่วยสอนนี้จะช่วยให้คุณเข้าใจวิธีสร้างและลบไฟล์คัดลอกและเปลี่ยนชื่อสร้างลิงก์ไปยังไฟล์เหล่านั้น ฯลฯ

ใน Unix มีไฟล์พื้นฐานสามประเภท -

  • Ordinary Files- ไฟล์ธรรมดาคือไฟล์ในระบบที่มีข้อมูลข้อความหรือโปรแกรมคำสั่ง ในบทช่วยสอนนี้คุณจะดูการทำงานกับไฟล์ธรรมดา

  • Directories- ไดเรกทอรีจัดเก็บทั้งไฟล์พิเศษและไฟล์ธรรมดา สำหรับผู้ใช้ที่คุ้นเคยกับ Windows หรือ Mac OS ไดเรกทอรี Unix จะเทียบเท่ากับโฟลเดอร์

  • Special Files- ไฟล์พิเศษบางไฟล์ให้การเข้าถึงฮาร์ดแวร์เช่นฮาร์ดไดรฟ์ไดรฟ์ซีดีรอมโมเด็มและอะแดปเตอร์อีเทอร์เน็ต ไฟล์พิเศษอื่น ๆ คล้ายกับนามแฝงหรือทางลัดและช่วยให้คุณสามารถเข้าถึงไฟล์เดียวโดยใช้ชื่ออื่น

รายชื่อไฟล์

ในการแสดงรายการไฟล์และไดเร็กทอรีที่จัดเก็บในไดเร็กทอรีปัจจุบันให้ใช้คำสั่งต่อไปนี้ -

$ls

นี่คือผลลัพธ์ตัวอย่างของคำสั่งด้านบน -

$ls

bin        hosts  lib     res.03
ch07       hw1    pub     test_results
ch07.bak   hw2    res.01  users
docs       hw3    res.02  work

คำสั่ง ls รองรับไฟล์ -l ตัวเลือกที่จะช่วยให้คุณได้รับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ในรายการ -

$ls -l
total 1962188

drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

นี่คือข้อมูลเกี่ยวกับคอลัมน์ในรายการทั้งหมด -

  • First Column- แสดงถึงประเภทไฟล์และสิทธิ์ที่กำหนดให้กับไฟล์ ด้านล่างนี้คือคำอธิบายของไฟล์ทุกประเภท

  • Second Column - แสดงจำนวนบล็อกหน่วยความจำที่นำมาโดยไฟล์หรือไดเร็กทอรี

  • Third Column- แสดงถึงเจ้าของไฟล์ นี่คือผู้ใช้ Unix ที่สร้างไฟล์นี้

  • Fourth Column- แสดงถึงกลุ่มของเจ้าของ ผู้ใช้ Unix ทุกคนจะมีกลุ่มที่เกี่ยวข้อง

  • Fifth Column - แสดงขนาดไฟล์เป็นไบต์

  • Sixth Column - แสดงวันที่และเวลาที่สร้างหรือแก้ไขไฟล์นี้เป็นครั้งสุดท้าย

  • Seventh Column - แสดงถึงไฟล์หรือชื่อไดเร็กทอรี

ใน ls -l ตัวอย่างรายชื่อไฟล์ทุกบรรทัดเริ่มต้นด้วยไฟล์ d, -, หรือ l. อักขระเหล่านี้ระบุประเภทของไฟล์ที่อยู่ในรายการ

ซีเนียร์ คำนำหน้าและคำอธิบาย
1

-

ไฟล์ปกติเช่นไฟล์ข้อความ ASCII ไฟล์ปฏิบัติการไบนารีหรือฮาร์ดลิงก์

2

b

บล็อกไฟล์พิเศษ บล็อกไฟล์อุปกรณ์อินพุต / เอาต์พุตเช่นฮาร์ดไดรฟ์ทางกายภาพ

3

c

ไฟล์พิเศษของอักขระ ไฟล์อุปกรณ์อินพุต / เอาต์พุตดิบเช่นฮาร์ดไดรฟ์ทางกายภาพ

4

d

ไฟล์ไดเร็กทอรีที่มีรายการของไฟล์และไดเร็กทอรีอื่น ๆ

5

l

ไฟล์ลิงค์สัญลักษณ์ ลิงก์บนไฟล์ทั่วไป

6

p

ท่อชื่อ. กลไกสำหรับการสื่อสารระหว่างกระบวนการ

7

s

ซ็อกเก็ตที่ใช้สำหรับการสื่อสารระหว่างกระบวนการ

Metacharacters

Metacharacters มีความหมายพิเศษใน Unix ตัวอย่างเช่น,* และ ?เป็น metacharacters เราใช้* เพื่อจับคู่อักขระ 0 ตัวขึ้นไปเครื่องหมายคำถาม (?) จับคู่กับอักขระเดี่ยว

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

$ls ch*.doc

แสดงไฟล์ทั้งหมดชื่อที่ขึ้นต้นด้วย ch และลงท้ายด้วย .doc -

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc ch02-1.doc c

ที่นี่ *ทำงานเป็นอักขระเมตาที่ตรงกับอักขระใด ๆ หากคุณต้องการแสดงไฟล์ทั้งหมดที่ลงท้ายด้วยเพียง.docจากนั้นคุณสามารถใช้คำสั่งต่อไปนี้ -

$ls *.doc

ไฟล์ที่ซ่อนอยู่

ไฟล์ที่มองไม่เห็นคือหนึ่งอักขระตัวแรกคือจุดหรืออักขระจุด (.) โปรแกรม Unix (รวมถึงเชลล์) ใช้ไฟล์เหล่านี้ส่วนใหญ่เพื่อจัดเก็บข้อมูลการกำหนดค่า

ตัวอย่างทั่วไปของไฟล์ที่ซ่อนอยู่ ได้แก่ ไฟล์ -

  • .profile - สคริปต์การเริ่มต้น Bourne shell (sh)

  • .kshrc - สคริปต์การเริ่มต้น Korn เชลล์ (ksh)

  • .cshrc - สคริปต์การเริ่มต้น C เชลล์ (csh)

  • .rhosts - ไฟล์คอนฟิกูเรชันเชลล์ระยะไกล

หากต้องการแสดงรายการไฟล์ที่มองไม่เห็นให้ระบุไฟล์ -a ตัวเลือกในการ ls -

$ ls -a

.         .profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03
$
  • Single dot (.) - นี่แสดงถึงไดเร็กทอรีปัจจุบัน

  • Double dot (..) - แสดงถึงไดเร็กทอรีหลัก

การสร้างไฟล์

คุณสามารถใช้ไฟล์ viโปรแกรมแก้ไขเพื่อสร้างไฟล์ธรรมดาบนระบบ Unix ใด ๆ คุณต้องให้คำสั่งต่อไปนี้ -

$ vi filename

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

This is unix file....I created it for the first time.....
I'm going to save this content in this file.

เมื่อคุณทำโปรแกรมเสร็จแล้วให้ทำตามขั้นตอนต่อไปนี้ -

  • กดปุ่ม esc เพื่อออกจากโหมดแก้ไข

  • กดสองปุ่ม Shift + ZZ ออกมาจากไฟล์อย่างสมบูรณ์

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

$ vi filename
$

การแก้ไขไฟล์

คุณสามารถแก้ไขไฟล์ที่มีอยู่โดยใช้ไฟล์ viบรรณาธิการ. เราจะพูดถึงวิธีการเปิดไฟล์ที่มีอยู่โดยย่อ -

$ vi filename

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

  • l เพื่อเลื่อนไปทางด้านขวา

  • h เพื่อเลื่อนไปทางด้านซ้าย

  • k เพื่อย้ายกลับหัวในไฟล์

  • j เพื่อเลื่อนลงในไฟล์

ดังนั้นเมื่อใช้ปุ่มด้านบนคุณจะสามารถวางเคอร์เซอร์ได้ทุกที่ที่คุณต้องการแก้ไข เมื่อคุณอยู่ในตำแหน่งแล้วคุณสามารถใช้ไฟล์iกุญแจสำคัญที่จะเข้ามาในโหมดแก้ไข เมื่อคุณแก้ไขไฟล์เสร็จแล้วให้กดEsc และสุดท้ายสองปุ่ม Shift + ZZ ออกมาจากไฟล์อย่างสมบูรณ์

แสดงเนื้อหาของไฟล์

คุณสามารถใช้ไฟล์ catคำสั่งเพื่อดูเนื้อหาของไฟล์ ต่อไปนี้เป็นตัวอย่างง่ายๆเพื่อดูเนื้อหาของไฟล์ที่สร้างขึ้นด้านบน -

$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$

คุณสามารถแสดงหมายเลขบรรทัดโดยใช้ไฟล์ -b ตัวเลือกพร้อมกับ cat คำสั่งดังนี้ -

$ cat -b filename
1   This is unix file....I created it for the first time.....
2   I'm going to save this content in this file.
$

การนับคำในไฟล์

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

$ wc filename
2  19 103 filename
$

นี่คือรายละเอียดของทั้งสี่คอลัมน์ -

  • First Column - แสดงจำนวนบรรทัดทั้งหมดในไฟล์

  • Second Column - แสดงจำนวนคำทั้งหมดในไฟล์

  • Third Column- แสดงจำนวนไบต์ทั้งหมดในไฟล์ นี่คือขนาดจริงของไฟล์

  • Fourth Column - แสดงชื่อไฟล์

คุณสามารถให้ไฟล์หลายไฟล์และรับข้อมูลเกี่ยวกับไฟล์เหล่านั้นได้พร้อมกัน ต่อไปนี้เป็นไวยากรณ์ง่ายๆ -

$ wc filename1 filename2 filename3

การคัดลอกไฟล์

ในการทำสำเนาไฟล์ให้ใช้ไฟล์ cpคำสั่ง ไวยากรณ์พื้นฐานของคำสั่งคือ -

$ cp source_file destination_file

ต่อไปนี้เป็นตัวอย่างในการสร้างสำเนาของไฟล์ที่มีอยู่ filename.

$ cp filename copyfile
$

ตอนนี้คุณจะพบอีกหนึ่งไฟล์ copyfileในไดเรกทอรีปัจจุบันของคุณ ไฟล์นี้จะเหมือนกับไฟล์ต้นฉบับทุกประการfilename.

การเปลี่ยนชื่อไฟล์

ในการเปลี่ยนชื่อไฟล์ให้ใช้ไฟล์ mvคำสั่ง ต่อไปนี้เป็นไวยากรณ์พื้นฐาน -

$ mv old_file new_file

โปรแกรมต่อไปนี้จะเปลี่ยนชื่อไฟล์ที่มีอยู่ filename ถึง newfile.

$ mv filename newfile
$

mvคำสั่งจะย้ายไฟล์ที่มีอยู่ไปยังไฟล์ใหม่อย่างสมบูรณ์ ในกรณีนี้คุณจะพบเฉพาะnewfile ในไดเรกทอรีปัจจุบันของคุณ

การลบไฟล์

ในการลบไฟล์ที่มีอยู่ให้ใช้ไฟล์ rmคำสั่ง ต่อไปนี้เป็นไวยากรณ์พื้นฐาน -

$ rm filename

Caution- ไฟล์อาจมีข้อมูลที่เป็นประโยชน์ ขอแนะนำให้ระมัดระวังขณะใช้สิ่งนี้เสมอDeleteคำสั่ง จะดีกว่าถ้าใช้ไฟล์-i ตัวเลือกพร้อมกับ rm คำสั่ง

ต่อไปนี้เป็นตัวอย่างที่แสดงวิธีลบไฟล์ที่มีอยู่ทั้งหมด filename.

$ rm filename
$

คุณสามารถลบไฟล์หลายไฟล์ได้พร้อมกันด้วยคำสั่งด้านล่าง -

$ rm filename1 filename2 filename3
$

สตรีม Unix มาตรฐาน

ภายใต้สถานการณ์ปกติโปรแกรม Unix ทุกโปรแกรมจะมีสตรีม (ไฟล์) สามสตรีมที่เปิดไว้เมื่อเริ่มต้น -

  • stdin- สิ่งนี้เรียกว่าอินพุตมาตรฐานและตัวอธิบายไฟล์ที่เกี่ยวข้องคือ 0 ซึ่งจะแสดงเป็น STDIN ด้วย โปรแกรม Unix จะอ่านอินพุตเริ่มต้นจาก STDIN

  • stdout- สิ่งนี้เรียกว่าเอาต์พุตมาตรฐานและตัวอธิบายไฟล์ที่เกี่ยวข้องคือ 1 ซึ่งจะแสดงเป็น STDOUT ด้วย โปรแกรม Unix จะเขียนเอาต์พุตเริ่มต้นที่ STDOUT

  • stderr- สิ่งนี้เรียกว่าข้อผิดพลาดมาตรฐานและตัวบอกไฟล์ที่เกี่ยวข้องคือ 2 ซึ่งจะแสดงเป็น STDERR ด้วย โปรแกรม Unix จะเขียนข้อความแสดงข้อผิดพลาดทั้งหมดที่ STDERR