struct สถานะ { dev_t st_dev; /* อุปกรณ์*/ ino_t st_ino; /* node*/ mode_t st_mode; /* mode*/ nlink_t st_nlink; /* ฮาร์ดลิงก์*/ uid_t st_uid; ID กลุ่ม */ dev_t st_rdev; /* ประเภทอุปกรณ์ */ off_t st_off; /* จำนวนไบต์ในไฟล์*/ st_blksize แบบยาวที่ไม่ได้ลงนาม; /* ขนาดบล็อก*/ st_blocks แบบยาวที่ไม่ได้ลงนาม; /* จำนวนบล็อก*/ time_t st_atime; /* เวลาเข้าถึงล่าสุด*/ time_t st_mtime; / time_t st_ctime; /* เวลาที่เปลี่ยนแปลงล่าสุด (อ้างอิงถึงคุณลักษณะ) */};
มาเรียนรู้เกี่ยวกับคุณลักษณะเหล่านี้ทีละรายการ หากคุณต้องการดูคุณลักษณะของไฟล์บางไฟล์ ให้ใช้
สถิติเพียงออกคำสั่งก็จะแสดงรายการข้อมูลตามโครงสร้างด้านบน นอกจากนี้,
LSคำสั่งยังสามารถแสดงคุณลักษณะที่เกี่ยวข้องของไฟล์ได้หลังจากปฏิบัติตามพารามิเตอร์บางตัว เช่น
-ลพารามิเตอร์.
ประเภทไฟล์สอดคล้องกับข้างต้น
st_modeมีไฟล์หลายประเภท เช่น ไฟล์ปกติ ลิงก์สัญลักษณ์ (ฮาร์ดลิงก์ ซอฟต์ลิงก์) ไฟล์ไปป์ ไฟล์อุปกรณ์ (อุปกรณ์สัญลักษณ์ อุปกรณ์บล็อก) ไฟล์ซ็อกเก็ต ฯลฯ ประเภทไฟล์ที่แตกต่างกันสอดคล้องกับฟังก์ชันและบทบาทที่แตกต่างกัน
$ ls -ltotal 12drwxr-xr-x 2 รูทรูท 4096 2550-12-07 20:08 directory_fileprw-r--r-- 1 รูทรูท 0 2007-12-07 20:18 fifo_pipebrw-r--r-- 1 รูต รูท 3, 1 2550-12-07 21:44 hda1_block_dev_filecrw-r--r-- 1 รูทรูท 1, 3 2550-12-07 21:43 null_char_dev_file-rw-r--r-- 2 รูทรูท 506 2550-12-07 21:55 Regular_file-rw -r--r-- 2 รูทรูท 506 2007-12-07 21:55 Regular_file_hard_linklrwxrwxrwx 1 รูต รูท 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ stat directory_file/ ไฟล์: `directory_file/' ขนาด: 4096 บล็อก: 8 บล็อก IO: 4096 ไดเร็กทอรีอุปกรณ์: 301h/769d ไอโหนด: 521521 ลิงก์: 2การเข้าถึง: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) การเข้าถึง: 2007-12-07 20:08:18.000000000 +0800แก้ไข: 2007- 12-07 20:08:18.000000000 +0800 เปลี่ยน: 2007-12-07 20:08:18.000000000 +0800$ stat null_char_dev_file ไฟล์: `null_char_dev_file' ขนาด: 0 บล็อก: 0 บล็อก IO: ไฟล์พิเศษอักขระ 4096 อุปกรณ์: 301h/769d ไอโหนด: 521240 ลิงก์: 1 ประเภทอุปกรณ์: 1,3การเข้าถึง: (0644/crw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)การเข้าถึง: 2007-12-07 21 :43:38.000000000 +0800แก้ไข: 2007-12-07 21:43:38.000000000 +0800เปลี่ยนแปลง: 2007-12-07 21:43:38.000000000 +0800
คำอธิบาย :ผ่าน
LSคุณจะเห็นว่าอักขระตัวแรกของแต่ละบรรทัดของผลลัพธ์คำสั่งแตกต่างกัน ซึ่งสะท้อนถึงประเภทของไฟล์ที่แตกต่างกันเท่านั้น
งแสดงถึงไดเรกทอรี
-แสดงถึงไฟล์ธรรมดา (หรือฮาร์ดลิงก์)
ลแสดงถึงลิงค์สัญลักษณ์
พีแสดงถึงไฟล์ไปป์ไลน์
ขและ
คหมายถึงอุปกรณ์บล็อกและอุปกรณ์อักขระตามลำดับ (เพิ่มเติม
สด่วน
ซ็อกเก็ตเอกสาร). มีอยู่
สถิติจากผลลัพธ์ของคำสั่ง คุณจะพบคำอธิบายที่ท้ายบรรทัดที่สอง ดังที่เห็นได้จากการดำเนินการข้างต้น
directory_fileคือไดเร็กทอรี
สถิติใช้ในผลลัพธ์ของคำสั่ง
ไดเรกทอรีแสดงถึงและ
null_char_dev_fileมันใช้
ไฟล์พิเศษของตัวละครแสดงให้เห็น
โดยปกติแล้วจะใช้เฉพาะไดเร็กทอรี ไฟล์ธรรมดา และลิงก์สัญลักษณ์เท่านั้น และไฟล์ประเภทอื่นๆ จะไม่ค่อยพบเห็น อย่างไรก็ตาม ไฟล์เหล่านี้ยังคงมีการใช้งานเป็นของตัวเอง หากคุณกำลังพัฒนาแบบฝังตัวหรือประมวลผลการสื่อสาร ฯลฯ ไฟล์อุปกรณ์ เนมไปป์ (FIFO) ต่อไปนี้เป็นการดำเนินการง่ายๆ เพื่อสะท้อนถึงความแตกต่างระหว่างกัน (จะมีการแนะนำหลักการเฉพาะในส่วนถัดไป "ระบบไฟล์กระบวนทัศน์การเขียนโปรแกรม Shell" หากคุณสนใจ คุณยังสามารถออนไลน์ล่วงหน้าเพื่อค้นหาบทบาทของไฟล์อุปกรณ์ได้ , บล็อกอุปกรณ์และอุปกรณ์อักขระ และวิธีการเขียนไดรเวอร์อุปกรณ์ที่เกี่ยวข้องในไดรเวอร์ ฯลฯ )
สำหรับไฟล์ธรรมดา: เป็นกลุ่มของตัวอักษรจึงสามารถอ่านเขียนได้ ฯลฯ
$ echo สวัสดีชาวโลก > Regular_file$ cat Regular_filehello ชาวโลก
ไฟล์ใหม่สามารถสร้างได้ในไดเร็กทอรี ดังนั้นไดเร็กทอรีจึงถูกเรียกว่า: โฟลเดอร์ โครงสร้างของไฟล์ไดเร็กทอรีจะถูกวิเคราะห์ในภายหลัง โดยจริงๆ แล้วมันจะเก็บชื่อไฟล์ของแต่ละไฟล์ไว้ข้างใต้
$ cd directory_file$ สัมผัส ไฟล์1 ไฟล์2 ไฟล์3
สำหรับเนมไปป์ การดำเนินการจะน่าสนใจกว่า: หากคุณต้องการอ่าน มันจะบล็อก เว้นแต่จะมีเนื้อหา หากคุณต้องการเขียนไปป์นั้น มันจะบล็อก เว้นแต่จะมีคนมาอ่าน มักใช้ในการสื่อสารกระบวนการ สามารถเปิดเทอร์มินัลได้ 2 ช่อง
เทอร์มินัล 1และ
เทอร์มินัล2ลองเลย:
terminal1$ cat fifo_pipe #มันบล็อกที่นี่ในตอนแรก และไม่พิมพ์สตริงทดสอบจนกว่าจะมีการดำเนินการเขียนต่อไปนี้เกิดขึ้น terminal2$ echo test > fifo_pipe
เกี่ยวกับอุปกรณ์บล็อค, อุปกรณ์ตัวละคร, ไฟล์อุปกรณ์ที่สอดคล้องกับ
/dev/hda1และ
/dev/nullหากคุณเคยใช้แฟลชไดรฟ์ USB หรือเขียนสคริปต์ง่ายๆ คุณควรใช้วิธีนี้มาก่อน :-)
$ mount hda1_block_dev_file /mnt #Mount พาร์ติชั่นแรกของฮาร์ดดิสก์ไปที่ /mnt (หลักการของการติดตั้งจะกล่าวถึงในหัวข้อถัดไป) $ echo littlefewfef > /dev/null #/dev/null เป็นเหมือนหลุมดำอะไรบางอย่าง หายไป เมื่อเข้าไปแล้วทุกอย่างก็หายไป
สองไฟล์สุดท้ายคือ
Regular_fileฮาร์ดลิงก์และซอฟต์ลิงก์ของไฟล์ หากคุณอ่านและเขียน เนื้อหาจะเหมือนกัน แต่ถ้าคุณลบมันออกไป ทั้งสองไฟล์จะไม่เกี่ยวข้องกัน อะไรคือความแตกต่างระหว่างฮาร์ดลิงก์และซอฟต์ลิงก์ ไฟล์แรกอาจกล่าวได้ว่าเป็นไฟล์ต้นฉบับ ในขณะที่ไฟล์หลังมีเพียง a
ไอโหนดแต่ไม่มีพื้นที่จัดเก็บจริงแนะนำให้ใช้
สถิติคำสั่งให้เห็นความแตกต่างระหว่างพวกเขารวมทั้งพวกเขาด้วย
บล็อก-
ไอโหนดเทียบเท่าคุณยังสามารถพิจารณาใช้
ความแตกต่างเปรียบเทียบขนาดของพวกเขา
$ ls Regular_file*ls Regular_file* -l-rw-r--r-- 2 รูทรูท 204800 2007-12-07 22:30 Regular_file-rw-r--r-- 2 รูทรูท 204800 2007-12-07 22 :30 Regular_file_hard_linklrwxrwxrwx 1 รูทรูท 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ rm Regular_file # ลบไฟล์ต้นฉบับ $ cat Regular_file_hard_link # ฮาร์ดลิงก์ยังคงอยู่และยังมีเนื้อหาอยู่ในนั้น fefe$ cat Regular_file_soft_linkcat: Regular_file_soft_link: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
แม้ว่าไฟล์ซอฟต์ลิงก์จะยังคงอยู่ แต่ก็ไม่สามารถอ่านอะไรได้เลยเนื่องจากไม่ได้เก็บเนื้อหาไว้ นี่คือความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์
ควรสังเกตว่าฮาร์ดลิงก์ไม่สามารถข้ามระบบไฟล์ได้ แต่ซอฟต์ลิงก์สามารถทำได้ นอกจากนี้ ไม่อนุญาตให้สร้างฮาร์ดลิงก์ไปยังไดเร็กทอรี
ประเภทไฟล์แบ่งออกเป็นประเภทข้างต้นจากระดับระบบไฟล์ Linux แต่ไฟล์ธรรมดายังสามารถแบ่งได้ (ตาม "โครงสร้างข้อมูล" ของเนื้อหาไฟล์) เช่นไฟล์ข้อความทั่วไปไฟล์ปฏิบัติการ
เอลฟ์เอกสาร,
อ๊อดเอกสาร,
JPGรูปแบบภาพ,
แลกเปลี่ยนไฟล์พาร์ติชั่น,
เอลฟ์หากสนใจหลักการทำงานของไฟล์แนะนำให้อ่านเอกสารอ้างอิงและ
เอลฟ์ส่วนที่เกี่ยวข้องของไฟล์ ส่วนนี้มีความสำคัญสำหรับวิศวกร Linux แบบฝัง
แม้ว่าไฟล์ธรรมดาประเภทต่างๆ จะมีเครื่องมือปฏิบัติการเป็นของตัวเอง แต่คุณยังคงสามารถอ่านและเขียนได้โดยตรง ฉันจะพูดถึงเครื่องมือเหล่านี้ก่อนแล้วค่อยหารือรายละเอียดในภายหลัง
อ.อ: เนื้อหาไฟล์ "ส่งออก" ในรูปแบบฐานแปดหรือรูปแบบอื่นๆ
สตริง: อ่านอักขระในไฟล์ (อักขระที่พิมพ์ได้)
จีซีซี-
จีดีบี-
อ่านเอง,objdump
รอ:เอลฟ์
เครื่องมือวิเคราะห์และประมวลผลไฟล์ (จีซีซี
คอมไพเลอร์,จีดีบี
ดีบักเกอร์อ่านเอง
วิเคราะห์ไฟล์ ELFเครื่องมือถอดรหัส objdump`)
เพิ่มคำสั่งที่สำคัญมากอีกคำสั่งหนึ่ง
ไฟล์คำสั่งนี้ใช้เพื่อดูคุณสมบัติของไฟล์ประเภทต่างๆ และ
สถิติเมื่อเปรียบเทียบกับคำสั่งแล้ว จะสามารถระบุไฟล์ธรรมดาเพิ่มเติมได้ กล่าวคือ
สถิติคำสั่งที่แสดง
ไฟล์ปกติ- เพราะ
ไฟล์ปกติอาจมีโครงสร้างที่แตกต่างกันได้หลากหลาย ดังนั้นจึงตีความได้แตกต่างกันและดำเนินการที่แตกต่างกันโดยได้รับการสนับสนุนจากระบบปฏิบัติการ แม้ว่าภายใต้ Linux คำต่อท้ายเฉพาะจะถูกเพิ่มลงในไฟล์เพื่อให้ผู้ใช้สามารถระบุประเภทไฟล์ได้อย่างง่ายดาย ระบบปฏิบัติการ Linux จะระบุประเภทไฟล์ต่างๆ ตามส่วนหัวของไฟล์ ไม่ใช่ส่วนต่อท้ายของไฟล์ ซึ่งทำให้ยากยิ่งขึ้นในการตีความ ไฟล์ที่เกี่ยวข้องมีข้อผิดพลาดได้ง่าย ต่อไปนี้เป็นการแนะนำโดยย่อ
ไฟล์การใช้คำสั่ง.
$ file ././: directory$ file /etc/profile/etc/profile: ASCII English text$ file /lib/libc-2.5.so/lib/libc-2.5.so: ELF 32-bit LSB shared object, Intel 80386 เวอร์ชัน 1 (SYSV) ไม่ถูกแยกไฟล์ $ /bin/test/bin/test: ปฏิบัติการ ELF 32 บิต LSB, Intel 80386 เวอร์ชัน 1 (SYSV), เชื่อมโยงแบบไดนามิก (ใช้ libs ที่ใช้ร่วมกัน), ปล้น $ ไฟล์ /dev/hda/dev/hda: บล็อกพิเศษ (3/0)$ ไฟล์ /dev/console/dev/console: อักขระพิเศษ (5/1) $ cp /etc/profile .$ tar zcf profile.tar.gz profile$ file profile.tar.gzprofile.tar.gz: gzip ข้อมูลที่บีบอัดจาก Unix แก้ไขล่าสุด: Tue Jan 4 18:53:53 2,000$ mkfifo fifo_test$ ไฟล์ fifo_testfifo_test: fifo (ไปป์ที่มีชื่อ)
ดูการใช้งานเพิ่มเติม
ไฟล์คู่มือคำสั่งเกี่ยวกับ
ไฟล์สำหรับหลักการดำเนินการตามคำสั่ง โปรดดูที่
มายากลคู่มือ (ดูที่
/etc/file/magicไฟล์ ทำความเข้าใจว่าไฟล์คืออะไร
หมายเลขมหัศจรรย์รอ).
ในฐานะระบบที่มีผู้ใช้หลายราย Linux มอบความสะดวกสบายอย่างมากให้กับผู้ใช้หลายคนในการใช้ระบบเดียวกัน ตัวอย่างเช่น สำหรับไฟล์ในระบบ Linux จะแยกผู้ใช้ที่แตกต่างกันผ่านเจ้าของเพื่อจัดสรรสิทธิ์ในการดำเนินงานให้กับไฟล์ต่างๆ เพื่อการจัดการที่ง่ายขึ้น เจ้าของไฟล์จะรวมผู้ใช้ที่เป็นเจ้าของไฟล์และกลุ่มผู้ใช้ที่เป็นเจ้าของไฟล์ เนื่องจากผู้ใช้สามารถอยู่ในหลายกลุ่มได้ ก่อนอื่น เรามาแนะนำการจัดการผู้ใช้และกลุ่มภายใต้ Linux กันก่อน
Linux จัดเตรียมชุดคำสั่งสำหรับจัดการผู้ใช้และกลุ่ม เช่น สำหรับการสร้างผู้ใช้
ผู้ใช้เพิ่มและ
เพิ่มกลุ่มใช้ในการลบผู้ใช้
ผู้ใช้เดลและ
กรุ๊ปเดล,นอกจากนี้,
รหัสผ่านคำสั่งใช้ในการเปลี่ยนรหัสผ่านผู้ใช้ แน่นอนว่าลีนุกซ์ยังมีการกำหนดค่าที่สอดคล้องกันสองแบบ กล่าวคือ
/etc/passwdและ
/etc/groupนอกจากนี้บางระบบยังแยกรหัสผ่านไว้ในไฟล์กำหนดค่าอีกด้วย
/etc/shadowกลาง. โปรดดูข้อมูลต่อไปนี้สำหรับการใช้งานโดยละเอียด จะไม่แนะนำเฉพาะความสัมพันธ์บางอย่างระหว่างไฟล์และผู้ใช้เท่านั้น
$ cown ชื่อผู้ใช้:ชื่อกลุ่มชื่อไฟล์
หากคุณต้องการแก้ไขเจ้าของไฟล์ทั้งหมดในไดเร็กทอรีแบบวนซ้ำ คุณสามารถเพิ่มได้
-รตัวเลือก
จากโครงสร้างไฟล์ที่แสดงไว้ตอนต้นของส่วนนี้จะเห็นว่ามีเพียงผู้ใช้เท่านั้น
บัตรประจำตัวประชาชนและกลุ่ม
บัตรประจำตัวประชาชนข้อมูลแต่
ลส -ลผลลัพธ์จะแสดงข้อมูลชื่อผู้ใช้และชื่อกลุ่ม มาดูกันก่อน
-nผลลัพธ์ของ:
$ ls -n Regular_file-rw-r--r-- 1 0 0 115 2007-12-07 23:45 Regular_file$ ls -l Regular_file-rw-r--r-- 1 รูทรูท 115 2007-12-07 23:45 ไฟล์ปกติ
อย่างที่คุณเห็น
ลส -nผู้ใช้ที่แสดง
บัตรประจำตัวประชาชนและกลุ่ม
บัตรประจำตัวประชาชน,และ
ลส -ลชื่อของพวกเขาจะปรากฏขึ้น จำไฟล์การกำหนดค่าสองไฟล์ที่กล่าวถึงข้างต้น
/etc/passwdและ
/etc/groupไฟล์? พวกเขาจัดเก็บผู้ใช้ตามลำดับ
บัตรประจำตัวประชาชนและชื่อผู้ใช้ กลุ่ม
บัตรประจำตัวประชาชนสัมพันธ์กับชื่อกลุ่มจึงง่ายต่อการคิด
ลส -ลวิธีที่คำสั่งส่งผ่านโครงสร้างไฟล์เมื่อนำไปใช้งาน
บัตรประจำตัวประชาชนข้อมูลค้นหาข้อมูลชื่อที่เกี่ยวข้อง หากคุณต้องการที่จะถูกต้อง
ลส -ลเพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับการนำคำสั่งไปใช้คุณสามารถใช้
สเตรซติดตามเพื่อดูว่าอ่านไฟล์การกำหนดค่าทั้งสองไฟล์หรือไม่
$ strace -f -o strace.log ls -l Regular_file$ cat strace.log | egrep passwd|กลุ่ม|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
แสดงให้เห็น:
สเตรซสามารถใช้เพื่อติดตามการโทรและสัญญาณของระบบ เช่น
จีดีบีเช่นเดียวกับเครื่องมืออันทรงพลังอื่นๆ มันขึ้นอยู่กับระบบ
เทรซการใช้งานการเรียกของระบบ
ในความเป็นจริง การแนะนำเจ้าของและการอนุญาตแยกกันนั้นไม่ดี เนื่องจากเพียงการรวมกันของทั้งสองเท่านั้นที่ทำให้ระบบที่มีผู้ใช้หลายรายเป็นไปได้ มิฉะนั้น จะไม่สามารถแยกการทำงานของผู้ใช้ที่แตกต่างกันในไฟล์บางไฟล์ได้ ดังนั้นการดำเนินการของไฟล์ การอนุญาตมีการแนะนำด้านล่าง
จาก
ลส -ลในอักขระ 9 ตัวสุดท้ายของคอลัมน์แรกของผลลัพธ์คำสั่ง คุณสามารถดูข้อมูลที่คล้ายกันนี้ได้
rwxr-xr-xซึ่งสอดคล้องกับโครงสร้างไฟล์
st_modeส่วนหนึ่ง(
st_modeประกอบด้วยสองส่วน: ข้อมูลประเภทไฟล์และข้อมูลสิทธิ์ของไฟล์) ข้อมูลประเภทนี้สามารถแบ่งออกได้เป็น 3 ส่วนคือ
wx-
รับ-
รับตามลำดับซึ่งสอดคล้องกับสิทธิ์ในการดำเนินงานของผู้ใช้ กลุ่ม และกลุ่มอื่นๆ ในไฟล์ที่เป็นเจ้าของไฟล์นั้น ถ้ามี
wxรายการใดรายการหนึ่งหมายถึงสามารถอ่านได้ เขียนได้ และปฏิบัติการได้ ถ้า
-แสดงว่าไม่มีการอนุญาตดังกล่าว ในทำนองเดียวกัน ก็สามารถแสดงเป็นฐานแปดได้ เช่น
rwxr-xr-xสามารถแสดงเป็นไบนารี 111101101 และฐานแปดที่สอดคล้องกันคือ 755 ด้วยเหตุนี้ จึงมีหลายวิธีในการปรับเปลี่ยนสิทธิ์ในการดำเนินการของไฟล์ และทั้งหมดนี้สามารถทำได้ผ่าน
โครโมดคำสั่งให้แก้ไข
เช่น ใส่
Regular_fileปรับเปลี่ยนการอนุญาตไฟล์ให้ผู้ใช้ทุกคนสามารถอ่าน เขียน และปฏิบัติการได้ กล่าวคือ
rwxrwxrwxยังสามารถแสดงเป็น 111111111 แปลเป็นเลขฐานแปดได้ 777 การอนุญาตนี้สามารถแก้ไขได้สองวิธี
$ chmod a+rwx Regular_file
หรือ
$ chmod 777 ไฟล์ปกติ
แสดงให้เห็น:
กหมายถึงผู้ใช้ที่ใช้ หากคุณต้องการให้สิทธิ์ในการอ่าน เขียน และปฏิบัติการแก่ผู้ใช้เท่านั้น คุณก็สามารถทำได้
กแทนที่ด้วย
คุณ;และ
-เพียงเพิ่มการอนุญาต ในทางกลับกัน หากคุณต้องการลบการอนุญาตบางอย่าง ให้ใช้
-,และ
wxมันสอดคล้องกับสิ่งที่อ่านได้ เขียนได้ และปฏิบัติการได้ ดูการใช้งานเพิ่มเติม
โครโมดคำสั่งช่วยเหลือ.
นอกเหนือจากการอนุญาตเหล่านี้แล้ว ยังมีสิทธิ์อื่นอีกสองรายการที่เกี่ยวข้องกับความปลอดภัยอีกด้วย กล่าวคือ
setuid/setgidและการควบคุมแบบอ่านอย่างเดียว ฯลฯ
หากมีการตั้งค่าไฟล์ (โปรแกรมหรือคำสั่ง)
setuid/setgidสิทธิ์ จากนั้นผู้ใช้จะสามารถทำได้
รากดังนั้นสิ่งนี้อาจนำมาซึ่งความเสี่ยงด้านความปลอดภัย หากมีการตั้งค่าการอนุญาตแบบอ่านอย่างเดียวของไฟล์ ผู้ใช้จะมีสิทธิ์แบบอ่านได้สำหรับไฟล์เท่านั้น ซึ่งหลีกเลี่ยงสถานการณ์เช่น
RM-RFปฏิบัติการที่ "น่ารังเกียจ" นำมาซึ่งพรบางอย่าง
ตามค่าเริ่มต้น ระบบจะไม่อนุญาตให้ผู้ใช้ทั่วไปดำเนินการ
รหัสผ่านสั่งผ่าน
setuid/setgidผู้ใช้ทั่วไปสามารถได้รับอนุญาตให้ดำเนินการได้
$ ls -l /usr/bin/passwd-rwx--x--x 1 รูท รูท 36092 19-06-2550 14:59 /usr/bin/passwd$ su #Switch ไปที่ผู้ใช้รูทและเพิ่ม " Sticky bit" $ chmod +s /usr/bin/passwd$ ls -l /usr/bin/passwd-rws--s--x 1 รูท รูท 36092 19-06-2550 14:59 /usr/bin/passwd$ exit$ passwd #ผู้ใช้ทั่วไปสามารถแก้ไขรหัสผ่านได้โดยดำเนินการคำสั่งนี้
แสดงให้เห็น:
เซตุอิดและเซ็ตกิดBit ช่วยให้ผู้ใช้ทั่วไปสามารถรากบทบาทของผู้ใช้จะทำงานเท่านั้นรากโปรแกรมหรือคำสั่งที่สามารถรันได้โดยบัญชีเท่านั้น
แม้ว่าสิ่งนี้จะอำนวยความสะดวกให้กับการจัดการในระดับหนึ่ง ตัวอย่างเช่น การดำเนินการข้างต้นทำให้ผู้ใช้ทั่วไปสามารถแก้ไขบัญชีของตนแทนได้
รากบัญชีที่จะทำงานนี้ให้กับผู้ใช้แต่ละราย เกี่ยวกับ
setuid/setgidสำหรับคำอธิบายโดยละเอียดเพิ่มเติม โปรดดูข้อมูลที่แนะนำล่าสุด
ตัวอย่างการอนุญาตแบบอ่านอย่างเดียว: ล็อคไฟล์สำคัญ (เพิ่มบิตที่ไม่เปลี่ยนรูป [ไม่เปลี่ยนรูป])) เพื่อหลีกเลี่ยงผลกระทบร้ายแรงที่เกิดจากการทำงานผิดพลาดต่างๆ (เช่น
:``rm -rf-
$ chattr +i Regular_file$ lsattr Regular_file----i-------- Regular_file$ rm Regular_file #หลังจากเพิ่มบิตที่ไม่เปลี่ยนรูป คุณจะไม่สามารถดำเนินกิจกรรม "ทำลายล้าง" ใด ๆ ในไฟล์ rm: ลบการป้องกันการเขียนออก ไฟล์ปกติ `regular_file'? yrm: ไม่สามารถลบ `regular_file': ไม่อนุญาตให้ดำเนินการ$ chattr -i Regular_file #หากคุณต้องการดำเนินการตามปกติ คุณสามารถลบ bit$ rm Regular_file นี้
แสดงให้เห็น:
แชทสามารถใช้เพื่อกำหนดสิทธิ์พิเศษให้กับไฟล์ได้ สำหรับการใช้งานเพิ่มเติม โปรดดูที่
แชทช่วย.
สำหรับไฟล์ธรรมดา ขนาดไฟล์คือขนาดของเนื้อหาไฟล์ เนื่องจากเป็นไฟล์พิเศษ ไดเร็กทอรีจึงจัดเก็บข้อมูลไฟล์ต่างๆ ที่จัดอยู่ในโครงสร้างไดเร็กทอรี ดังนั้น โดยทั่วไปแล้วขนาดของไดเร็กทอรีจะคงที่ มีขีดจำกัดบน นั่นคือ ขนาดหารด้วยความยาวของชื่อไฟล์ "ขนาดไฟล์" ของไฟล์อุปกรณ์สอดคล้องกับหมายเลขอุปกรณ์หลักและรองของอุปกรณ์ และขนาดของไฟล์ไปป์ที่มีชื่อเสียงจะเป็น 0 เสมอ เนื่องจากคุณสมบัติพิเศษในการอ่านและเขียน ฮาร์ดลิงก์ (ไฟล์ไดเร็กทอรีไม่สามารถสร้างฮาร์ดลิงก์ได้) โดยพื้นฐานแล้วคือสำเนาที่สมบูรณ์ของไฟล์ต้นฉบับ ดังนั้นขนาดของไฟล์จึงเท่ากับขนาดของไฟล์ต้นฉบับ ซอฟต์ลิงค์เป็นเพียงก
ไอโหนดจัดเก็บตัวชี้ไปยังไฟล์ต้นฉบับ ดังนั้นขนาดจึงเป็นเพียงจำนวนไบต์ของชื่อไฟล์ต้นฉบับ ต่อไปเราจะเพิ่มหน่วยความจำผ่านการสาธิต
ตัวอย่างขนาดไฟล์สำหรับไฟล์ต้นฉบับและไฟล์ที่เชื่อมโยง:
$ echo -n abcde > Regular_file #Write 5 ไบต์ไปยัง Regular_file $ ls -l Regular_file*-rw-r--r-- 2 รูทรูท 5 2007-12-08 15:28 Regular_file-rw-r--r -- 2 รูต รูท 5 2007-12-08 15:28 Regular_file_hard_filerwxrwxrwx 1 รูทรูท 12 2550-12-07 20:15 Regular_file_soft_link -> Regular_filerwxrwxrwx 1 รูทรูท 22 2550-12-08 15:21 Regular_file_soft_link_link -> Regular_file_soft_link$ i=regular_file$ j=regular_file_soft_link$ echo ${#i} ${# เจ} #Soft Link เก็บจำนวนไบต์ของชื่อไฟล์ของไฟล์ต้นฉบับที่ชี้ไปที่ 12 22
ขนาดไฟล์ที่สอดคล้องกับหมายเลขอุปกรณ์: หมายเลขอุปกรณ์หลักและรอง
$ ls -l hda1_block_dev_filebrw-r--r-- 1 รูทรูท 3, 1 2007-12-07 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 รูทรูท 1, 3 2007-12-07 21:43 null_char_dev_file
อาหารเสริม: หลัก
(หลัก) ครั้งหมายเลขอุปกรณ์ (รอง) มีฟังก์ชันที่แตกต่างกัน เมื่อเปิดไฟล์อุปกรณ์ เคอร์เนลจะกำหนดหมายเลขอุปกรณ์หลัก (
หมายเลขหลัก) เพื่อค้นหาไดรเวอร์ที่ลงทะเบียนด้วยหมายเลขอุปกรณ์หลักในเคอร์เนล (คุณสามารถทำได้
แมว /proc/อุปกรณ์ตรวจสอบความสอดคล้องระหว่างหมายเลขไดรเวอร์ที่ลงทะเบียนกับหมายเลขอุปกรณ์หลัก) และหมายเลขอุปกรณ์รอง (
หมายเลขรอง) จะถูกส่งผ่านไปยังไดรเวอร์เองผ่านเคอร์เนล (โปรดดูบทที่ 10 ของ "The Linux Primer") ดังนั้นสำหรับเคอร์เนลจึงสามารถค้นหาไดรเวอร์ที่เกี่ยวข้องเพื่อระบุอุปกรณ์ผ่านหมายเลขอุปกรณ์หลักและสำหรับไดรเวอร์เพื่อให้สามารถเข้าถึงอุปกรณ์ได้ซับซ้อนมากขึ้น เช่น การเข้าถึงส่วนต่าง ๆ ของอุปกรณ์ (เช่น ฮาร์ดแวร์แบ่งออกเป็นส่วนต่าง ๆ ผ่านพาร์ติชัน) ส่วนปรากฏขึ้น
hda1-
hda2-
hda3เป็นต้น) เช่น การสร้างตัวเลขสุ่มที่มีข้อกำหนดต่างกัน (เช่น
/dev/สุ่มและ
/dev/urandomรอ).
ขนาดของไฟล์ไดเร็กทอรีทำไมจึงเป็นเช่นนี้? ดูขนาดของโครงสร้างไดเร็กทอรีด้านล่าง บล็อกของไฟล์ไดเร็กทอรีจะจัดเก็บรายการสำหรับชื่อไฟล์ทั้งหมดในไดเร็กทอรี
$ ls -ld directory_file/drwxr-xr-x 2 รูต รูท 4096 2007-12-07 23:14 directory_file/
โครงสร้างของไดเร็กทอรีมีดังนี้:
struct dirent { ยาว d_ino; off_t d_off; d_reclen แบบสั้นที่ไม่ได้ลงนาม;
คุณลักษณะเวลาของไฟล์สามารถบันทึกข้อมูลการดำเนินการของผู้ใช้ในไฟล์ได้ และจะให้ข้อมูลอ้างอิงสำหรับผู้ดูแลระบบในการจัดการระบบ การพิจารณาข้อมูลเวอร์ชันของไฟล์ ฯลฯ ดังนั้นในการอ่านเอกสารจึงแนะนำให้ใช้
แมวรอเครื่องมืออ่าน อย่าใช้เครื่องมือแก้ไข
เป็นกลุ่มโปรดอ่าน เนื่องจากแม้ว่าจะไม่มีการดำเนินการแก้ไข แต่เมื่อดำเนินการคำสั่งบันทึก ข้อมูลการประทับเวลาของไฟล์จะถูกแก้ไข
ชื่อไฟล์ไม่ได้จัดเก็บไว้ในโครงสร้างไฟล์ แต่อยู่ในโครงสร้างไดเร็กทอรีที่ชื่อไฟล์นั้นอยู่ ดังนั้น ชื่อไฟล์จะต้องไม่ซ้ำกันภายในระดับเดียวกันของไดเร็กทอรี
สำหรับไฟล์ การดำเนินการทั่วไปได้แก่ การสร้าง การลบ การแก้ไข การอ่าน การเขียน ฯลฯ "การดำเนินการเบื้องหลัง" ที่สอดคล้องกับการดำเนินการต่างๆ จะได้รับการวิเคราะห์โดยละเอียดในบทถัดไป "การดำเนินการระบบไฟล์กระบวนทัศน์การเขียนโปรแกรม Shell"
ซ็อกเก็ตไฟล์เป็นไฟล์ประเภทพิเศษที่สามารถสร้างผ่านภาษา C ได้ แต่จะไม่มีการนำมาใช้ที่นี่ (ไม่ทราบว่าจะสามารถสร้างได้โดยตรงด้วยคำสั่งหรือไม่)
$ touch Regular_file #สร้างไฟล์ปกติ $ mkdir directory_file #สร้างไฟล์ไดเร็กทอรีซึ่งสามารถมีไฟล์ได้มากขึ้น $ ln Regular_file Regular_file_hard_link #ลิงก์ฮาร์ด สำเนาที่สมบูรณ์ของไฟล์ต้นฉบับ $ ln -s Regular_file Regular_file_soft_link #คล้ายกับตัวชี้ไฟล์ ชี้ไปที่ไฟล์ต้นฉบับ $ mkfifo fifo_pipe # หรือสร้างผ่าน mknod fifo_pipe p FIFO ตรงตามลักษณะเข้าก่อนออกก่อน $ mknod hda1_block_dev_file b 3 1 # อุปกรณ์บล็อก $ mknod null_char_dev_file c 1 3 # อุปกรณ์ตัวละคร
การสร้างไฟล์จะเพิ่มโหนดให้กับระบบไฟล์ (
inode) ข้อมูลโหนดจะถูกบันทึกลงในตารางโหนดของระบบไฟล์ เพื่อให้ชัดเจนยิ่งขึ้น หมายความว่าใบไม้ (ไฟล์) หรือกิ่งใหม่ (ไฟล์ไดเร็กทอรีแบบที่มีใบไม้เติบโตอยู่บนต้นไม้) เติบโตขึ้นบนต้นไม้ต้นไม้
คำสั่งหรือคำสั่ง ls` จะแสดงออกมาเป็นภาพ จากมุมมองของการใช้งานประจำวัน ระบบไฟล์สามารถดูได้เป็นแผนผังแบบกลับหัว เนื่องจากมีความคล้ายคลึงและจดจำได้ง่าย
$ ไดเรกทอรีปัจจุบันของต้นไม้
หรือ
$ls ไดเร็กทอรีปัจจุบัน
ความรู้สึกโดยตรงที่สุดของการลบไฟล์คือไฟล์นั้นไม่มีอยู่อีกต่อไป ซึ่งสามารถทำได้โดย
LSหรือ
ต้นไม้คำสั่งนี้เปรียบเสมือนกิ่งไม้ที่ถูกตัดจากต้นไม้หรือใบไม้ที่ถูกถอนออก ในความเป็นจริง หลังจากลบ ไฟล์เหล่านี้จะไม่หายไปทันที แต่จะถูกทำเครื่องหมายเพื่อลบเท่านั้น ดังนั้น หากไม่มีการดำเนินการเขียนดิสก์ที่เกี่ยวข้องเพื่อ "ครอบคลุม" พื้นที่ดิสก์ที่เกี่ยวข้องหลังจากการลบ ก็สามารถกู้คืนได้ในหลักการ (แม้ว่า งานดังกล่าวมักจะยุ่งยาก ดังนั้นโปรดคิดให้รอบคอบก่อนที่จะลบข้อมูลสำคัญบางอย่าง เช่น การทำงานสำรองข้อมูล) สำหรับวิธีการที่เกี่ยวข้อง โปรดดูข้อมูลถัดไป
คำสั่งเฉพาะในการลบไฟล์คือ
RMหากคุณต้องการลบไดเร็กทอรีว่างคุณสามารถใช้
rmdirคำสั่ง. ตัวอย่างเช่น:
$ rm Regular_file$ rmdir directory_file$ rm -r directory_file_not_empty
RMมีพารามิเตอร์ที่สำคัญมากอยู่สองตัว ตัวหนึ่งคือ
-ฉคำสั่งนี้ "ป่าเถื่อน" มากและอาจทำให้ผู้ใช้ Linux จำนวนมากได้รับความเจ็บปวด
-ฉันคำสั่งนี้ "อ่อนโยน" มากและอาจทำให้ผู้ใช้หลายคนรู้สึกหงุดหงิด สิ่งที่คุณใช้นั้นขึ้นอยู่กับ "อารมณ์" ของคุณ หากคุณได้ดำเนินการสำรองข้อมูลอย่างเพียงพอหรือดำเนินการอย่างมีประสิทธิภาพเพื่อหลีกเลี่ยงผลที่ตามมาที่เป็นหายนะ คุณจะรู้สึกสบายใจมากขึ้นเมื่อทำงานเหล่านี้
การคัดลอกไฟล์มักจะหมายถึงสำเนาเนื้อหาของไฟล์ "ชั่วคราว" จากการแนะนำในตอนต้นของส่วนนี้ เราควรเข้าใจว่าฮาร์ดลิงก์และซอฟต์ลิงก์ของไฟล์นั้นเป็น "การคัดลอกไฟล์" เช่นกัน ประการแรกจะคัดลอกเนื้อหาไฟล์แบบซิงโครนัส และส่วนหลังจะ "คัดลอก" แบบซิงโครนัส กรณีการอ่านและการเขียน "เนื้อหาไฟล์. ตัวอย่างเช่น:
ใช้
ซีพีคำสั่งให้คัดลอกไฟล์ตามปกติ (ต้องคัดลอกไดเร็กทอรี
-รตัวเลือก)
$ cp Regular_file Regular_file_copy$ cp -r diretory_file directory_file_copy
สร้างฮาร์ดลิงก์ (
ลิงค์และ
สำเนาข้อแตกต่างคืออันหลังได้รับการอัปเดตพร้อมกัน แต่อันแรกไม่มีการอัปเดตพร้อมกัน หลังจากการคัดลอก ทั้งสองจะไม่เกี่ยวข้องกันอีกต่อไป)
$ ln Regular_file Regular_file_hard_link
สร้างซอฟต์ลิงค์
$ ln -s Regular_file regluar_file_soft_link
จริงๆ แล้วการแก้ไขชื่อไฟล์จะแก้ไขเฉพาะตัวระบุชื่อไฟล์เท่านั้น สามารถผ่านไปได้
MVคำสั่งแก้ไขชื่อไฟล์ (เช่น เปลี่ยนชื่อ)
$ mv Regular_file Regular_file_new_name
จริงๆ แล้วการแก้ไขไฟล์เป็นการจัดการเนื้อหาของไฟล์ ซึ่งสอดคล้องกับการแก้ไขไฟล์ข้อความธรรมดา ซึ่งส่วนใหญ่เกี่ยวข้องกับการอ่าน การเขียน การต่อท้าย การลบ ฯลฯ ของเนื้อหาไฟล์ โดยปกติงานเหล่านี้จะดำเนินการผ่านโปรแกรมแก้ไขเฉพาะทาง เช่น โปรแกรมแก้ไขบรรทัดคำสั่ง
เป็นกลุ่ม-
อีแมคส์และอินเทอร์เฟซแบบกราฟิก
เกดิท เกดิทรอ. หากเป็นไฟล์เฉพาะบางไฟล์ก็จะมีเครื่องมือแก้ไขและประมวลผลพิเศษ เช่น ซอฟต์แวร์ประมวลผลภาพ
ขลิบด้าย,ซอฟต์แวร์แก้ไขเอกสาร
โอเพ่นออฟฟิศรอ. โดยทั่วไปเครื่องมือเหล่านี้จะมีบทช่วยสอนเฉพาะ
ต่อไปนี้เป็นคำแนะนำโดยย่อเกี่ยวกับการดำเนินการแก้ไขทั่วไปของไฟล์ผ่านการเปลี่ยนเส้นทางภายใต้ Linux
สร้างไฟล์และเขียน
เอบีซี
$ echo abcde > new_regular_file
เพิ่มบรรทัดอื่นในไฟล์ด้านบน
เอบีซี
$ echo abcde >> new_regular_file
อ่านไฟล์ทีละบรรทัด
$ ในขณะที่อ่าน LINE; ทำ echo $LINE; เสร็จสิ้น < test.sh
เคล็ดลับ: หากคุณต้องการดำเนินการตัวแปรสตริงที่มีการเปลี่ยนเส้นทางเป็นคำสั่ง ให้ใช้
ประเมินผลคำสั่งมิฉะนั้นจะไม่สามารถตีความการเปลี่ยนเส้นทางได้ ตัวอย่างเช่น,
$ เปลี่ยนเส้นทาง=echo abcde >test_redirect_file$ $redirect #Here > จะถูกพิมพ์เป็นอักขระ > แทนที่จะตีความว่าเป็นการเปลี่ยนเส้นทาง abcde >test_redirect_file$ eval $redirect #This จะตีความ > เป็นการเปลี่ยนเส้นทาง$ cat test_redirect_fileabcde
การบีบอัดและขยายไฟล์คือการอำนวยความสะดวกในการส่งเนื้อหาไฟล์ในแง่หนึ่ง แต่อาจมีการใช้งานเฉพาะบางอย่าง เช่น ไฟล์เคอร์เนลและไฟล์อิมเมจระบบไฟล์ เป็นต้น (สำหรับความรู้ที่เกี่ยวข้องเพิ่มเติม โปรดดูเอกสารประกอบที่ตามมา)
นี่เป็นเพียงวิธีการบีบอัดและคลายการบีบอัดทั่วไปบางประการ:
ทาร์
ไฟล์ $ tar -cf file.tar #บีบอัด $ tar -xf file.tar #คลายการบีบอัด
กซ
ไฟล์ $ gzip -9 $ ไฟล์ gunzip
tar.gz
$ tar -zcf file.tar.gz ไฟล์$ tar -zxf file.tar.gz
bz2
ไฟล์ $ bzip2 $ ไฟล์ bunzip2
tar.bz2
$ tar -jcf ไฟล์.tar.bz2 ไฟล์$ tar -jxf ไฟล์.tar.bz2
จากการสาธิตข้างต้นน่าจะชัดเจนมาก
ทาร์-
บีซิป2,บันซิป2,
gzip,กันซิป
มันเป็นหน้าที่ของผู้บังคับบัญชาหรือไม่? หากยังไม่ชัดเจน ให้ทำเพิ่มเติมและเปรียบเทียบคำสั่งข้างต้นบางส่วน และตรวจสอบคู่มือ:แมน ต้าร์`...
การค้นหาไฟล์หมายถึงการค้นหาตำแหน่งของไฟล์ที่มีคุณลักษณะบางอย่างในระบบไฟล์ในลำดับชั้นไดเร็กทอรีที่แน่นอน หากตำแหน่งนี้ถูกขยายไปยังเครือข่ายทั้งหมด ก็สามารถแสดงเป็น
URLที่อยู่สำหรับที่อยู่ในท้องที่สามารถแสดงเป็น
ไฟล์://+เส้นทางท้องถิ่น เส้นทางท้องถิ่นในระบบ Linux เริ่มต้นด้วย
-เริ่มต้นด้วย ตัวอย่างเช่น โฮมไดเร็กตอรี่ของผู้ใช้แต่ละคนสามารถแสดงเป็น:
ไฟล์:///home/- ข้อมูลต่อไปนี้จะแนะนำวิธีการค้นหาไฟล์ในเครื่องเพียงบางวิธีเท่านั้น
หาคำสั่งจัดเตรียมวิธีการค้นหา "ทันเวลา" ตามคำขอของผู้ใช้ โดยจะสำรวจไฟล์ทั้งหมดในลำดับชั้นไดเร็กทอรีที่ระบุจนกว่าจะพบไฟล์ที่ต้องการ และ
อัปเดตb+ค้นหาให้กลยุทธ์การค้นหา "รวดเร็ว"
ปรับปรุงbอัปเดตและสร้างฐานข้อมูลไฟล์ในเครื่องในขณะนั้น
ค้นหาค้นหาฐานข้อมูลนี้ตามชื่อไฟล์เพื่อค้นหาไฟล์ที่เกี่ยวข้องอย่างรวดเร็ว อดีตรองรับการค้นหาผ่านคุณสมบัติของไฟล์ต่าง ๆ และจัดเตรียมอินเทอร์เฟซ (
-ดำเนินการoption) ใช้เพื่อประมวลผลไฟล์ที่ค้นหา ดังนั้นจึงให้ความสะดวกสบายอย่างมากสำหรับแฟน ๆ ของสคริปต์ "คำสั่งเดียว" แต่สำหรับการค้นหาตามชื่อไฟล์
อัปเดตb+ค้นหาวิธีนี้จะปรับปรุงประสิทธิภาพการค้นหาได้อย่างมาก ต่อไปนี้เป็นคำแนะนำโดยย่อเกี่ยวกับทั้งสองวิธีนี้:
หาการสาธิตการใช้งานคำสั่งเบื้องต้น
$ find ./ -name *.c -o -name *.h #Find all C language files, -o is or $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# ย้ายไฟล์ที่พบไปที่ c_files การใช้งานนี้น่าสนใจมาก
การใช้งานข้างต้นสามารถใช้ได้
xargsการทดแทนคำสั่ง
$ find ./ -name *.c -o -name *.h | คำสั่ง เช่น ฉันต้องแก้ไข
เปลี่ยนส่วนต่อท้ายชื่อไฟล์ทั้งหมดเป็นตัวพิมพ์ใหญ่
$ ค้นหา ./ -name *.c -o -name *.h |.
ท็อปเปอร์.ชเป็นไฟล์ประมวลผลที่เราจำเป็นต้องใช้เพื่อแปลงตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ การใช้งานเฉพาะมีดังนี้:
$ cat toupper.sh#!/bin/bash# {} จะถูกขยายไปยังบรรทัดปัจจุบันและกลายเป็นอาร์กิวเมนต์แรกของสคริปต์นี้FROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $FROM $TOecho $COMeval $COM
อัปเดตb+ค้นหาการสาธิตการใช้งานเบื้องต้น
$ addedb #Update ไลบรารี $ ค้นหา find*.gz # ค้นหาแพ็คเกจบีบอัด gz ทั้งหมดที่มีสตริงการค้นหา
นอกเหนือจากสองคำสั่งข้างต้นแล้ว ยังมีเครื่องมือค้นหาคำสั่งบน Linux ด้วย:
ที่และ
อยู่ไหนแบบแรกใช้เพื่อส่งคืนพาธแบบเต็มของคำสั่งบางคำสั่ง ในขณะที่แบบหลังใช้เพื่อส่งคืนคำสั่ง ไฟล์ต้นฉบับ
เส้นทางไปยังไฟล์ man ตัวอย่างเช่น ค้นหาเส้นทางที่แน่นอนในการค้นหาคำสั่ง `:
$ ซึ่งค้นหา/usr/bin/find$ โดยที่ findfind: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
ควรกล่าวถึงว่าหากคุณต้องการค้นหาไฟล์ตามเนื้อหาแล้ว
หาและ
อัปเดตb+ค้นหาเช่นเดียวกับ
ที่-
อยู่ไหนไม่มีอะไรที่เราสามารถทำได้ทางเลือกคือ
เกรป-
sedรอคำสั่งอันแรกจะถูกเพิ่มเข้าไป
-รในอนาคต สามารถใช้พารามิเตอร์เพื่อค้นหาเนื้อหาไฟล์ที่ระบุในไฟล์ในไดเร็กทอรีที่ระบุ จากนั้นจึงนำไปใช้
-ฉันหลังจากผ่านพารามิเตอร์แล้ว เนื้อหาไฟล์จะถูกแทนที่ การใช้งานขั้นพื้นฐานได้รับการแนะนำอย่างละเอียดในบทที่แล้ว และจะไม่ทำซ้ำที่นี่
ควรเน้นว่าคำสั่งเหล่านี้มีความหมายมากสำหรับการทำงานของไฟล์ พวกเขาสรุปโครงสร้างระบบไฟล์ในระดับหนึ่งทำให้การทำงานของระบบไฟล์ทั้งหมดง่ายขึ้นเป็นการทำงานของไฟล์เดียว หากไฟล์เดียวพิจารณาเฉพาะส่วนของข้อความในที่สุดมันจะถูกแปลงเป็นการดำเนินการสตริงก่อนหน้า สิ่งที่กล่าวถึงในส่วนที่แล้ว เพื่อให้มีความเข้าใจที่ชัดเจนยิ่งขึ้นเกี่ยวกับโครงสร้างองค์กรของไฟล์และความสัมพันธ์ระหว่างไฟล์ ระบบไฟล์จะกล่าวถึงในเชิงลึกในหัวข้อถัดไป
ดูระบบไฟล์เสมือน Linux จากไฟล์ I/O
การวิเคราะห์ระบบไฟล์ลีนุกซ์
“Linux Core” บทที่ 9 ระบบไฟล์
ไดรเวอร์อุปกรณ์ Linux รุ่นที่ 3
เคล็ดลับ: เคล็ดลับบางประการสำหรับการเปลี่ยนเส้นทาง Linux I/O
การโหลด แยกวิเคราะห์ และตัวอย่างการวิเคราะห์ไดนามิกลิงก์ไฟล์ ELF ใน Linux ภายใต้แพลตฟอร์ม Intel:
ตอนที่ 1,
ส่วนที่ 2
เทคโนโลยีการดีบักสคริปต์เชลล์
สรุปรูปแบบไฟล์ ELF และกระบวนการโหลดโปรแกรม
การเขียนโปรแกรมภาษา C บน Linux - การทำงานของไฟล์
ส่วนการดำเนินการไฟล์ของการเขียนโปรแกรมภาษา C บน Linux
มาตรฐานลำดับชั้นของระบบไฟล์
เรียนรู้การกู้คืนไฟล์ Ext3 ที่ถูกลบในระบบ Linux
ใช้ mc เพื่อกู้คืนไฟล์ที่ถูกลบ
หลักการลบและกู้คืน Linux ext3 โดยไม่ตั้งใจ
รายการวิธีการบีบอัด/คลายการบีบอัด Linux ทั้งหมด
ทุกอย่างเป็นไบต์
เมื่อพิจารณาถึงความสำคัญของไฟล์และระบบไฟล์ เราจะนำเสนอในสามส่วนย่อย: ไฟล์ ระบบไฟล์ โปรแกรมและกระบวนการ ในส่วน "ไฟล์" เราจะแนะนำคุณลักษณะพื้นฐานและการทำงานปกติของไฟล์เป็นหลัก ในส่วน "ระบบไฟล์" เราจะหารือในเชิงลึกเกี่ยวกับส่วนต่างๆ ของระบบไฟล์ Linux (รวมถึงโครงสร้างของระบบไฟล์ Linux และ โครงสร้างทั่วไปของระบบไฟล์เฉพาะ การวิเคราะห์ หลักการทำงานของไดรเวอร์พื้นฐาน) ส่วน "โปรแกรมและกระบวนการ" จะกล่าวถึงเนื้อหาที่เกี่ยวข้องของไฟล์ปฏิบัติการโดยเฉพาะ (รวมถึงประเภทโปรแกรมที่แตกต่างกัน กระบวนการโหลดและการดำเนินการ การโต้ตอบระหว่างที่แตกต่างกัน กระบวนการ [ไปป์คำสั่งและไปป์ที่ไม่มีชื่อ การสื่อสารสัญญาณ] การควบคุมกระบวนการ ฯลฯ )
จำเป็นต้องหารืออย่างชัดเจนถึงความหมายของขนาดไดเร็กทอรี นอกจากนี้ เป็นการดีที่สุดที่จะพิจารณาการดำเนินการไฟล์แบบเดิมๆ ทั้งหมด รวมถึงการอ่านไฟล์ การเขียน การดำเนินการ การลบ การแก้ไข การคัดลอก การบีบอัด/คลายการบีบอัด ฯลฯ
ฉันเพิ่งกลับมาจากเซี่ยงไฮ้ในตอนบ่าย และค้นพบว่าเซี่ยงไฮ้เป็นเมืองที่สวยงาม เมื่อฉันกลับมาฉันเริ่มที่จะเรียงลำดับบล็อกนี้ที่ฉันพลาดไปสองสัปดาห์เนื่องจากการแข่งขัน
ในวันที่ 15 ธันวาคมเพิ่มส่วนการค้นหาไฟล์