วิธีใช้คำสั่ง fd บน Linux
เผยแพร่แล้ว: 2022-01-29 บน Linux fd
เป็นทางเลือกที่ง่ายกว่าสำหรับคำสั่ง find
มีไวยากรณ์ที่เรียบง่าย ใช้ค่าเริ่มต้นที่สมเหตุสมผล และมีพฤติกรรมสามัญสำนึกในตัว มาดูก้าวของมันกันเถอะ
fd กับ find: อะไรคือความแตกต่าง?
คำสั่ง fd
ไม่ได้มีวัตถุประสงค์เพื่อแทนที่คำสั่ง find
แบบเดิมซึ่งเคยใช้บน Linux มาโดยตลอด แต่ fd
พยายามที่จะตอบสนองการใช้งานทั่วไปของ find
ด้วยวิธีที่ตรงไปตรงมามากกว่า—และมักจะเร็วกว่า find
แปดหรือเก้าเท่า คุณสามารถดูการเปรียบเทียบบางส่วนได้ในหน้าที่เก็บ GitHub ของโปรเจ็กต์
fd
มีเอาต์พุตที่เป็นสี คล้ายกับโหมด ls
บางโหมด เป็นแบบเรียกซ้ำ แต่ไม่ค้นหาไดเรกทอรีที่ซ่อนอยู่ตามค่าเริ่มต้น มันรู้เกี่ยวกับ Git และจะละเว้นรูปแบบใดๆ ในไฟล์ “.gitignore” ของคุณโดยอัตโนมัติ
fd
ไม่คำนึงถึงขนาดตัวพิมพ์โดยค่าเริ่มต้น อย่างไรก็ตาม หากรูปแบบการค้นหาของคุณมีอักษรตัวพิมพ์ใหญ่ fd
จะทำงานในโหมดที่คำนึงถึงขนาดตัวพิมพ์ แน่นอน คุณสามารถลบล้างค่าเริ่มต้นได้ แต่ในหลายๆ กรณี ค่าเหล่านี้ใช้ได้ผลสำหรับคุณ
ที่เกี่ยวข้อง: วิธีใช้คำสั่งค้นหาทั้งหมดของ Linux
กำลังติดตั้ง fd
ตั้งแต่ Ubuntu 19.04 (Disco Dingo) คุณสามารถติดตั้ง fd
ได้โดยตรงโดยเรียกแพ็คเกจที่ได้รับการดูแลอย่างเป็นทางการด้วย apt-get
หากคุณใช้ Ubuntu เวอร์ชันเก่า ให้ตรวจสอบคำแนะนำในการติดตั้งในหน้า Git hub
พิมพ์ต่อไปนี้:
sudo apt-get ติดตั้ง fd-find
ใน Ubuntu คำสั่งคือ fdfind
เพื่อหลีกเลี่ยงความขัดแย้งของชื่อกับยูทิลิตี้อื่นที่มีอยู่ หากคุณต้องการให้เป็น fd
คุณสามารถตั้งค่านามแฝง:
นามแฝง fd=fdfind
หากต้องการให้นามแฝงคงอยู่และจะยังคงใช้งานได้หลังจากรีบูต ให้ใส่ไว้ในไฟล์ “.bashrc” หรือ “.bash_aliases”
ที่เกี่ยวข้อง: วิธีสร้างนามแฝงและฟังก์ชั่นเชลล์บน Linux
ในการติดตั้ง fd
บน Fedora ให้พิมพ์คำสั่งนี้:
sudo dfn ติดตั้ง fd-find
บน Manjaro พิมพ์ต่อไปนี้:
sudo pacman -Syu fd
fd กับ fdfind
เพื่อหลีกเลี่ยงความสับสน เราได้ทิ้งคำสั่งไว้ด้วยชื่อเริ่มต้น fdfind
บนพีซีทดสอบ Ubuntu ของเรา fd
และ fdfind
เป็นคำสั่งเดียวกันทุกประการ ดังที่คุณเห็นในตัวอย่างต่อไปนี้ (หากคุณขอให้ fdfind
แสดงเวอร์ชันของคำสั่ง คำสั่งจะเรียกตัวเองว่า “fd”):
fdfind --version
เราจะเรียกคำสั่งว่า "fed" แต่ในตัวอย่าง เราจะใช้ "fdfind" ของ Ubuntu บนลีนุกซ์รุ่นอื่นๆ คุณสามารถพิมพ์ “fd” แทน “fdfind” เพื่อบันทึกการกดแป้นพิมพ์บางส่วน
ค้นหาง่าย ๆ ด้วย fd
หากคุณใช้ fd
โดยไม่มีตัวเลือกบรรทัดคำสั่ง มันจะทำงานคล้ายกับ ls
เล็กน้อย ยกเว้นว่าจะแสดงรายการไฟล์ในไดเร็กทอรีย่อยตามค่าเริ่มต้น
พิมพ์ต่อไปนี้:
fdfind
เอาต์พุตจะปรากฏเป็นสีต่างๆ สำหรับไฟล์ประเภทต่างๆ และไดเร็กทอรีต่างๆ
หากต้องการดูไฟล์บางประเภท ให้ใช้ตัวเลือก
(ส่วนขยาย) โปรดทราบว่าคุณไม่จำเป็นต้องมีจุด (.) นำหน้าส่วนขยายและไม่ต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่-e
ตัวอย่างเช่น คุณสามารถพิมพ์ข้อมูลต่อไปนี้:
fdfind -e png
ตอนนี้ ไฟล์ที่แสดงอยู่เท่านั้นคือไฟล์ภาพ PNG
หากต้องการค้นหาไฟล์เดียว ให้พิมพ์ชื่อไฟล์ในบรรทัดคำสั่ง ดังนี้
fdfind index.page
พบไฟล์และอยู่ในไดเร็กทอรีย่อย เราไม่ต้องบอกให้ fd
ค้นหาซ้ำ
หากต้องการให้การค้นหาเริ่มต้นในไดเร็กทอรีเฉพาะ ให้รวมพาธไฟล์ในบรรทัดคำสั่ง คำสั่งต่อไปนี้จะเริ่มการค้นหาในไดเร็กทอรี "/ etc" และค้นหาไฟล์ที่มี "passwd" ในชื่อไฟล์:
fdfind passwd / etc
ที่นี่ เรากำลังค้นหาไฟล์ซอร์สโค้ด C ทั้งหมดที่มี "coord" ในชื่อไฟล์:
fdfind -ec coord
พบไฟล์ที่ตรงกันสองไฟล์
fd และ Git
Git เป็นระบบควบคุมเวอร์ชันซอร์สโค้ดที่ได้รับความนิยมอย่างมาก หากคุณใช้ Git บนคอมพิวเตอร์ของคุณ คุณอาจใช้ไฟล์ “.gitignore” เพื่อบอก Git ว่าไฟล์ใดที่ควรเกี่ยวข้องกับตัวมันเอง และไฟล์ใดที่สามารถละเว้นได้ โดยค่าเริ่มต้น fd
จะยึดตามการตั้งค่าในไฟล์ “.gitignore” ของคุณ
ในไดเร็กทอรีนี้ เรามีที่เก็บ Git และไฟล์ “.gitignore” เราพิมพ์ดังต่อไปนี้:
ls -adl .git*
ให้ fd
แสดงรายการไฟล์ใดๆ ที่มี “coord” ในชื่อไฟล์ จากนั้นเราจะทำการค้นหาซ้ำและใช้ตัวเลือก -I
(ไม่ละเว้น) สิ่งนี้บอกให้ fd
ละเว้นการตั้งค่าในไฟล์ “.gitignore” และรายงานทุกไฟล์ที่ตรงกัน
เพื่อทำสิ่งนี้ทั้งหมด เราพิมพ์ดังต่อไปนี้:
fdfind coord
fdfind coord -I
ไฟล์พิเศษสองไฟล์ในผลลัพธ์ชุดที่สองคือไฟล์อ็อบเจ็กต์ สิ่งเหล่านี้ถูกสร้างขึ้นเมื่อมีการคอมไพล์โปรแกรมไฟล์ จากนั้นตัวเชื่อมโยงจะใช้เพื่อสร้างเวอร์ชันที่ปฏิบัติการได้ขั้นสุดท้ายของโปรแกรม
ไฟล์อ็อบเจ็กต์มักจะถูกละเว้นโดยโปรแกรมควบคุมเวอร์ชันซอร์สโค้ด สิ่งเหล่านี้ถูกสร้างขึ้นใหม่ทุกครั้งที่คุณคอมไพล์โปรแกรม ดังนั้นคุณจึงไม่ต้องเก็บสำเนาของพวกมัน มีรายการในไฟล์ “.gitignore” ที่สั่งให้ Git ละเว้นไฟล์อ็อบเจ็กต์ และตามค่าเริ่มต้น fd
จะไม่สนใจไฟล์เหล่านั้นด้วย
ตัวเลือก -I
(ไม่ละเว้น) บังคับให้ fd
ส่งคืนทุกอย่างที่พบ แทนที่จะได้รับคำแนะนำจากไฟล์ ".gitginore"
ประเภทไฟล์และความละเอียดอ่อนของตัวพิมพ์
คุณสามารถขอให้ fd
ค้นหาไดเร็กทอรี ไฟล์ (รวมถึงไฟล์ที่เรียกใช้งานได้และว่างเปล่า) และลิงก์สัญลักษณ์ คุณสามารถทำได้โดยใช้ตัวเลือก -t
(ประเภท) ตามด้วยตัวอักษรตัวใดตัวหนึ่งด้านล่าง:
- ฉ : ไฟล์.
- d : ไดเร็กทอรี.
- l : ลิงค์สัญลักษณ์.
- x : ไฟล์ปฏิบัติการ
- e : ไฟล์ว่าง
ต่อไปนี้จะค้นหาไดเร็กทอรีชื่อ images:
fdfind -td ภาพ
พบรายการที่ตรงกัน หนึ่งไดเรกทอรีย่อยที่ต่ำกว่าไดเรกทอรีปัจจุบัน
มาดูกันว่าความละเอียดอ่อนของตัวพิมพ์ทำงานอย่างไรกับรูปแบบการค้นหา เราพิมพ์ข้อความต่อไปนี้เพื่อค้นหาไฟล์ที่มี "geo" ในชื่อไฟล์ก่อน จากนั้นจึงค้นหาไฟล์ที่มี "Geo" ในชื่อไฟล์:
fdfind -tf geo
fdfind -tf Geo
ในคำสั่งแรก เราใช้รูปแบบการค้นหาตัวพิมพ์เล็ก ซึ่งทำให้ fd
ทำงานในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ ซึ่งหมายความว่าทั้ง "Geo" และ "geo" เป็นการจับคู่ที่ถูกต้อง
คำสั่งที่สองของเรามีอักขระตัวพิมพ์ใหญ่ ซึ่งทำให้ fd
ทำงานในลักษณะที่คำนึงถึงขนาดตัวพิมพ์ ซึ่งหมายความว่าเฉพาะ "Geo" เท่านั้นที่ตรงกัน
การดำเนินการคำสั่ง
คำสั่ง fd
อนุญาตให้คุณเรียกใช้คำสั่งอื่นและดำเนินการกับแต่ละไฟล์ที่พบ
สมมติว่าเรารู้ว่ามีไฟล์ Zip อยู่ที่ไหนสักแห่งในแผนผังไดเร็กทอรีซอร์สโค้ดของเรา เราสามารถค้นหาโดยใช้คำสั่งต่อไปนี้ ซึ่งค้นหาไฟล์ที่มีนามสกุล ZIP:
fdfinf -e zip
ด้วยตัวเลือก -x
(exec) คุณสามารถส่งไฟล์แต่ละไฟล์ที่พบไปยังคำสั่งอื่นเพื่อประมวลผลได้ ตัวอย่างเช่น เราสามารถพิมพ์ข้อความต่อไปนี้เพื่อเรียกโปรแกรมอรรถประโยชน์ unzip เพื่อคลายซิปไฟล์ ZIP ของเรา ("{}" เป็นตัวยึดตำแหน่งแทนไฟล์ที่พบ):
fdfind -e zip -x เปิดเครื่องรูด {}
การดำเนินการนี้จะแตกไฟล์ในไดเร็กทอรีการทำงานปัจจุบัน หากเราต้องการให้แตกไฟล์ในไดเร็กทอรีที่มีไฟล์ ZIP เราสามารถใช้ตัวยึดตำแหน่งต่อไปนี้:
- {} : เส้นทางไฟล์แบบเต็มและชื่อไฟล์ที่พบ
- {/} : ชื่อไฟล์ของไฟล์ที่พบ
- {//} : ไดเร็กทอรีที่มีไฟล์ที่พบ
- {/.} : ชื่อไฟล์ของไฟล์ที่พบ โดยไม่มีนามสกุล
เพื่อให้ไฟล์ ZIP ของเราถูกพบและคลายซิปในไดเร็กทอรีที่มีไฟล์ดังกล่าว เราสามารถใช้ตัวเลือก unzip -d
(ไดเร็กทอรี) และส่งผ่านไปยังตัวยึดตำแหน่งไดเร็กทอรีหลัก ( {//}
):
fdfind -e zip -x เปิดเครื่องรูด {} -d {//}
ไฟล์ ZIP จะอยู่ในตำแหน่งและแตกไฟล์ในไดเร็กทอรีหลัก
การค้นหาของคุณ?
เนื่องจากครอบคลุมการใช้งานทั่วไปส่วนใหญ่ด้วยความเรียบง่ายดังกล่าว fd
จึงกลายเป็นคำสั่ง "find" ของคุณได้อย่างง่ายดาย เมื่อใดก็ตามที่คุณต้องการคุณลักษณะขั้นสูง คุณสามารถกลับไปหาทหารผ่านศึกที่ช่ำชองเสมอ find
คำสั่งลินุกซ์ | ||
ไฟล์ | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · เข้าร่วม · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · ดู · strings · พิมพ์ · เปลี่ยนชื่อ · zip · unzip · เมานต์ · umount · ติดตั้ง · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · แพทช์ · แปลง · rclone · ฉีก · srm | |
กระบวนการ | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · หมดเวลา · ผนัง · ใช่ · ฆ่า · หลับ · sudo · su · เวลา · groupadd · usermod · กลุ่ม · lshw · ปิดระบบ · รีบูต · หยุด · poweroff · passwd · lscpu · crontab · วันที่ · bg · fg | |
ระบบเครือข่าย | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ