Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

15 ตัวอย่างคำสั่ง Unix 'ls' ที่ปฏิบัติจริงสำหรับการจัดการไฟล์อย่างมีประสิทธิภาพ

ls – ผู้ใช้ Unix และผู้ดูแลระบบไม่สามารถขาดคำสั่งสองตัวอักษรนี้ได้ ไม่ว่าคุณจะใช้ 10 ครั้งต่อวันหรือ 100 ครั้งต่อวัน การรู้จักพลังของคำสั่ง ls จะทำให้การใช้งานบรรทัดคำสั่งเป็นประสบการณ์ที่น่าสนุกสนาน

ในบทความนี้ เราจะทบทวน 15 ตัวอย่างปฏิบัติจริงของคำสั่ง ls อันทรงพลัง

1. เปิดไฟล์ที่แก้ไขล่าสุดด้วย ls -t

เพื่อเปิดไฟล์ที่แก้ไขล่าสุดในไดเรกทอรีปัจจุบัน ให้ใช้การรวมของคำสั่ง ls, head และ vi ตามที่แสดงด้านล่าง

ls -t เรียงลำดับไฟล์ตามเวลาการแก้ไข แสดงไฟล์ที่แก้ไขล่าสุดก่อน head -1 เลือกไฟล์แรกนี้

$ vi first-long-file.txt
$ vi second-long-file.txt
$ vi `ls -t | head -1`
[หมายเหตุ: จะเปิดไฟล์ที่คุณแก้ไขล่าสุด (เช่น second-long-file.txt)]

2. แสดงไฟล์ทีละบรรทัดด้วย ls -1

เพื่อแสดงรายการทีละบรรทัด ให้ใช้ตัวเลือก -1 ตามที่แสดงด้านล่าง

$ ls -1
bin
boot
cdrom
dev
etc
home
initrd
initrd.img
lib

3. แสดงข้อมูลทั้งหมดเกี่ยวกับไฟล์/ไดเรกทอรีด้วย ls -l

เพื่อแสดงข้อมูลรายการแบบยาวของไฟล์/ไดเรกทอรี

$ ls -l
-rw-r----- 1 ramesh team-dev 9275204 Jun 13 15:27 mthesaur.txt.gz
  • ตัวอักษรที่ 1 – ประเภทไฟล์: ตัวอักษรแรกระบุประเภทของไฟล์
    ในตัวอย่างข้างต้น ขีดกลาง (-) ในตัวอักษรแรกบ่งชี้ว่าเป็นไฟล์ทั่วไป ต่อไปนี้คือตัวเลือกประเภทไฟล์ที่เป็นไปได้ในตัวอักษรที่ 1 ของเอาต์พุต ls -l
    • คำอธิบายฟิลด์
    • - ไฟล์ทั่วไป
    • d ไดเรกทอรี
    • s ไฟล์ซ็อกเก็ต
    • l ไฟล์ลิงก์
  • ฟิลด์ 1 – สิทธิ์ไฟล์: ตัวอักษร 9 ตัวถัดไประบุสิทธิ์ของไฟล์ ทุก 3 ตัวอักษรหมายถึงสิทธิ์อ่าน เขียน รันสำหรับผู้ใช้ กลุ่ม และคนอื่นๆ ในตัวอย่างนี้ -rw-r----- หมายถึงสิทธิ์อ่าน-เขียนสำหรับผู้ใช้ สิทธิ์อ่านสำหรับกลุ่ม และไม่มีสิทธิ์สำหรับคนอื่น
  • ฟิลด์ 2 – จำนวนลิงก์: ฟิลด์ที่สองระบุจำนวนลิงก์สำหรับไฟล์นั้น ในตัวอย่างนี้ 1 หมายถึงมีเพียงลิงก์เดียวไปยังไฟล์นี้
  • ฟิลด์ 3 – เจ้าของ: ฟิลด์ที่สามระบุเจ้าของไฟล์ ในตัวอย่างนี้ ไฟล์นี้เป็นของผู้ใช้ 'ramesh'
  • ฟิลด์ 4 – กลุ่ม: ฟิลด์ที่สี่ระบุกลุ่มของไฟล์ ในตัวอย่างนี้ ไฟล์นี้อยู่ในกลุ่ม 'team-dev'
  • ฟิลด์ 5 – ขนาด: ฟิลด์ที่ห้าระบุขนาดของไฟล์ ในตัวอย่างนี้ '9275204' แสดงขนาดไฟล์
  • ฟิลด์ 6 – วันที่และเวลาแก้ไขล่าสุด: ฟิลด์ที่หกระบุวันที่และเวลาของการแก้ไขล่าสุดของไฟล์ ในตัวอย่างนี้ 'Jun 13 15:27' ระบุเวลาแก้ไขล่าสุด
  • ฟิลด์ 7 – ชื่อไฟล์: ฟิลด์สุดท้ายคือชื่อของไฟล์ ในตัวอย่างนี้ ชื่อไฟล์คือ mthesaur.txt.gz

4. แสดงขนาดไฟล์ในรูปแบบอ่านง่ายด้วย ls -lh

ใช้ ls -lh (h ย่อมาจาก human readable) เพื่อแสดงขนาดไฟล์ในรูปแบบที่อ่านง่าย เช่น M สำหรับ MB, K สำหรับ KB, G สำหรับ GB

$ ls -l
-rw-r----- 1 ramesh team-dev 9275204 Jun 12 15:27 arch-linux.txt.gz*
$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

5. แสดงข้อมูลไดเรกทอรีด้วย ls -ld

เมื่อใช้ "ls -l" จะได้รายละเอียดของเนื้อหาในไดเรกทอรี แต่ถ้าต้องการรายละเอียดของไดเรกทอรีเอง ให้ใช้ตัวเลือก -d เช่น หากใช้ ls -l /etc จะแสดงไฟล์ทั้งหมดภายใต้ไดเรกทอรี etc แต่ถ้าต้องการแสดงข้อมูลของไดเรกทอรี /etc/ เอง ให้ใช้ -ld ตามด้านล่าง

$ ls -l /etc
total 3344
-rw-r--r-- 1 root root 15276 Oct 5 2004 a2ps.cfg
-rw-r--r-- 1 root root 2562 Oct 5 2004 a2ps-site.cfg
drwxr-xr-x 4 root root 4096 Feb 2 2007 acpi
-rw-r--r-- 1 root root 48 Feb 8 2008 adjtime
drwxr-xr-x 4 root root 4096 Feb 2 2007 alchemist
$ ls -ld /etc
drwxr-xr-x 21 root root 4096 Jun 15 07:02 /etc

6. เรียงไฟล์ตามเวลาแก้ไขล่าสุดด้วย ls -lt

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

$ ls -lt
total 76
drwxrwxrwt 14 root root 4096 Jun 22 07:36 tmp
drwxr-xr-x 121 root root 4096 Jun 22 07:05 etc
drwxr-xr-x 13 root root 13780 Jun 22 07:04 dev
drwxr-xr-x 13 root root 4096 Jun 20 23:12 root
drwxr-xr-x 12 root root 4096 Jun 18 08:31 home
drwxr-xr-x 2 root root 4096 May 17 21:21 sbin
lrwxrwxrwx 1 root root 11 May 17 20:29 cdrom -> media/cdrom
drwx------ 2 root root 16384 May 17 20:29 lost+found
drwxr-xr-x 15 root root 4096 Jul 2 2008 var

7. เรียงไฟล์ตามเวลาแก้ไขล่าสุด (ย้อนกลับ) ด้วย ls -ltr

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

$ ls -ltr
total 76
drwxr-xr-x 15 root root 4096 Jul 2 2008 var
drwx------ 2 root root 16384 May 17 20:29 lost+found
lrwxrwxrwx 1 root root 11 May 17 20:29 cdrom -> media/cdrom
drwxr-xr-x 2 root root 4096 May 17 21:21 sbin
drwxr-xr-x 12 root root 4096 Jun 18 08:31 home
drwxr-xr-x 13 root root 4096 Jun 20 23:12 root
drwxr-xr-x 13 root root 13780 Jun 22 07:04 dev
drwxr-xr-x 121 root root 4096 Jun 22 07:05 etc
drwxrwxrwt 14 root root 4096 Jun 22 07:36 tmp

8. แสดงไฟล์ซ่อนด้วย ls -a (หรือ) ls -A

เพื่อแสดงไฟล์ซ่อนทั้งหมดในไดเรกทอรี ให้ใช้ตัวเลือก '-a' ไฟล์ซ่อนใน Unix เริ่มต้นด้วย '.' ในชื่อไฟล์

$ ls -a
[rnatarajan@asp-dev ~]$ ls -a
. Debian-Info.txt .. CentOS-Info.txt .bash_history Fedora-Info.txt .bash_logout .lftp .bash_profile libiconv-1.11.tar.tar .bashrc libssh2-0.12-1.2.el4.rf.i386.rpm

จะแสดงไฟล์ทั้งหมดรวมถึง '.' (ไดเรกทอรีปัจจุบัน) และ '..' (ไดเรกทอรีพาเรนต์) หากต้องการแสดงไฟล์ซ่อน แต่ไม่แสดง '.' และ '..' ให้ใช้ตัวเลือก -A

$ ls -A
Debian-Info.txt Fedora-Info.txt CentOS-Info.txt Red-Hat-Info.txt .bash_history SUSE-Info.txt .bash_logout .lftp .bash_profile libiconv-1.11.tar.tar .bashrc libssh2-0.12-1.2.el4.rf.i386.rpm
[หมายเหตุ: . และ .. ไม่ได้แสดงที่นี่]

9. แสดงไฟล์แบบเรียกซ้ำด้วย ls -R

$ ls /etc/sysconfig/networking
devices profiles
$ ls -R /etc/sysconfig/networking
/etc/sysconfig/networking:
devices profiles
/etc/sysconfig/networking/devices:
/etc/sysconfig/networking/profiles:
default
/etc/sysconfig/networking/profiles/default:

เพื่อแสดงไฟล์ทั้งหมดแบบเรียกซ้ำ ให้ใช้ตัวเลือก -R หากทำจาก / จะแสดงไฟล์ที่ไม่ซ่อนทั้งหมดในระบบไฟล์ทั้งหมดแบบเรียกซ้ำ

10. แสดงหมายเลข Inode ของไฟล์ด้วย ls -i

บางครั้งคุณอาจต้องการทราบหมายเลข inode ของไฟล์สำหรับการบำรุงรักษาภายใน ใช้ตัวเลือก -i ตามด้านล่างเพื่อแสดงหมายเลข inode โดยใช้หมายเลข inode คุณสามารถลบไฟล์ที่มีอักขระพิเศษในชื่อได้ ตามที่อธิบายในตัวอย่าง #6 ของบทความคำสั่ง find

$ ls -i /etc/xinetd.d/
279694 chargen
279724 cups-lpd
279697 daytime-udp
279695 chargen-udp
279696 daytime
279698 echo

11. ซ่อนอักขระควบคุมด้วย ls -q

เพื่อพิมพ์เครื่องหมายคำถามแทนอักขระควบคุมที่ไม่ใช่กราฟิก ให้ใช้ตัวเลือก -q

ls -q

12. แสดง UID และ GID ของไฟล์ด้วย ls -n

แสดงผลลัพธ์เหมือน -l แต่แสดง uid และ gid ในรูปแบบตัวเลขแทนชื่อ

$ ls -l ~/.bash_profile
-rw-r--r-- 1 ramesh ramesh 909 Feb 8 11:48 /home/ramesh/.bash_profile
$ ls -n ~/.bash_profile
-rw-r--r-- 1 511 511 909 Feb 8 11:48 /home/ramesh/.bash_profile
[หมายเหตุ: แสดง 511 สำหรับ uid และ 511 สำหรับ gid]

13. จำแนกไฟล์ด้วยอักขระพิเศษด้วย ls -F

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

$ ls -F
Desktop/ Documents/ Ubuntu-App@ firstfile Music/ Public/ Templates/

ดังนั้นในเอาต์พุตข้างต้น

  • / – ไดเรกทอรี
  • ไม่มีอะไร – ไฟล์ทั่วไป
  • @ – ไฟล์ลิงก์
  • * – ไฟล์รันได้

14. จำแนกไฟล์ด้วยสีด้วย ls --color=auto

การจดจำประเภทไฟล์จากสีที่แสดงเป็นอีกวิธีหนึ่งในการจำแนกไฟล์ ในเอาต์พุตข้างต้น ไดเรกทอรีแสดงเป็นสีน้ำเงิน ลิงก์นิยมแสดงเป็นสีเขียว และไฟล์ทั่วไปแสดงเป็นสีเริ่มต้น

$ ls --color=auto
Desktop Documents Examples firstfile Music Pictures Public Templates Videos

15. อลิแอสคำสั่ง ls ที่มีประโยชน์

คุณสามารถนำตัวเลือก ls ที่ต้องการจากข้างต้นมาเป็น aliases เราแนะนำดังนี้

  • แสดงรายการยาวพร้อมขนาดในรูปแบบอ่านง่าย
    alias ll="ls -lh"
  • จำแนกประเภทไฟล์โดยต่อท้ายอักขระพิเศษ
    alias lv="ls -F"
  • จำแนกประเภทไฟล์ด้วยทั้งสีและอักขระพิเศษ
    alias ls="ls -F --color=auto"

บทความ Linux ที่น่าสนใจ

ต่อไปนี้คือบทความ 15 ตัวอย่าง ที่น่าสนใจซึ่งคุณอาจพบว่ามีประโยชน์

  • Get a Grip on the Grep! – 15 Practical Grep Command Examples
  • Linux Crontab: 15 Awesome Cron Job Examples
  • Mommy, I found it! — 15 Practical Linux Find Command Examples
  • 15 Examples To Master Linux Command Line History