ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | Contents | ถัดไป>

rm: ลบไดเร็กทอรี 'เก็บถาวร' หรือไม่ y

เราจะพูดถึงวิธีทำให้ตัวเลือกนี้เป็นค่าเริ่มต้นในบทที่ 7 ซึ่งจะกล่าวถึงการกำหนดสภาพแวดล้อมเชลล์ของคุณเอง



3.3.3. ค้นหาไฟล์


3.3.3.1. การใช้คุณสมบัติของเชลล์


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


สามารถใช้การทดแทนได้ทุกประเภทพร้อมกัน เปลือกมีเหตุผลมากเกี่ยวกับเรื่องนี้ ตัวอย่างเช่น Bash shell ไม่มีปัญหากับนิพจน์เช่น ls นามสกุล/*/*/*[2-3].


ในเชลล์อื่น ๆ เครื่องหมายดอกจันมักใช้เพื่อลดความพยายามในการพิมพ์: ผู้คนจะป้อน cd ผบ* แทน cd ไดเรกทอรี. อย่างไรก็ตามใน Bash สิ่งนี้ไม่จำเป็นเนื่องจาก GNU เชลล์มีคุณสมบัติที่เรียกว่าชื่อไฟล์สมบูรณ์ หมายความว่าคุณสามารถพิมพ์อักขระสองสามตัวแรกของคำสั่ง (ที่ใดก็ได้) หรือไฟล์ (ในไดเร็กทอรีปัจจุบัน) และหากไม่มีความสับสนเกิดขึ้น เชลล์จะค้นหาว่าคุณหมายถึงอะไร ตัวอย่างเช่น


ในไดเร็กทอรีที่มีไฟล์จำนวนมาก คุณสามารถตรวจสอบว่ามีไฟล์ใดบ้างที่ขึ้นต้นด้วยตัวอักษร A เพียงแค่พิมพ์ ls A และกดปุ่ม แถบ คีย์สองครั้งแทนที่จะกด เข้าสู่. หากมีไฟล์เดียวที่ขึ้นต้นด้วย "A" ไฟล์นี้จะแสดงเป็นอาร์กิวเมนต์ของ ls (หรือคำสั่งเชลล์ใด ๆ สำหรับเรื่องนั้น) ทันที


3.3.3.2. ข้อใด


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

/opt/acroread/bin แต่ไดเร็กทอรีนี้ไม่อยู่ในเส้นทางของเธอ:


ทีน่า:~> ซึ่ง acroread

/usr/bin/which: ไม่มี acroread ใน (/bin:/usr/bin:/usr/bin/X11)

ทีน่า:~> ซึ่ง acroread

/usr/bin/which: ไม่มี acroread ใน (/bin:/usr/bin:/usr/bin/X11)

ปัญหาสามารถแก้ไขได้โดยการให้พาธแบบเต็มไปยังคำสั่งเพื่อรัน หรือโดยการส่งออกเนื้อหาของ

ตัวแปรเส้นทาง:


ทีน่า:~> ส่งออก PATH=$PATH:/opt/acroread/bin


ทีน่า:~> เสียงสะท้อน $PATH

/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

ทีน่า:~> ส่งออก PATH=$PATH:/opt/acroread/bin


ทีน่า:~> เสียงสะท้อน $PATH

/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

การใช้ ที่ คำสั่งยังตรวจสอบเพื่อดูว่าคำสั่งนั้นเป็นนามแฝงสำหรับคำสั่งอื่นหรือไม่:


gerrit:~> ซึ่ง -a ls

ls มีนามแฝงว่า `ls -F --color=auto' ls คือ /bin/ls

gerrit:~> ซึ่ง -a ls

ls มีนามแฝงว่า `ls -F --color=auto' ls คือ /bin/ls

หากวิธีนี้ใช้ไม่ได้กับระบบของคุณ ให้ใช้ปุ่ม นามแฝง คำสั่ง:


จนถึง@www:~/mail$ นามแฝง ls

นามแฝง ls='ls --color'

จนถึง@www:~/mail$ นามแฝง ls

นามแฝง ls='ls --color'



3.3.3.3. ค้นหาและค้นหา


เหล่านี้เป็นเครื่องมือจริงที่ใช้เมื่อค้นหาเส้นทางอื่นนอกเหนือจากที่ระบุไว้ในเส้นทางการค้นหา NS พบ เครื่องมือที่รู้จักจาก UNIX นั้นทรงพลังมาก ซึ่งอาจเป็นต้นเหตุของไวยากรณ์ที่ค่อนข้างยากขึ้น GNU พบอย่างไรก็ตาม เกี่ยวข้องกับปัญหาทางไวยากรณ์ คำสั่งนี้ไม่เพียงแต่ช่วยให้คุณค้นหาชื่อไฟล์เท่านั้น แต่ยังยอมรับขนาดไฟล์ วันที่เปลี่ยนแปลงล่าสุด และคุณสมบัติไฟล์อื่นๆ เป็นเกณฑ์สำหรับการค้นหา การใช้งานทั่วไปคือการค้นหาชื่อไฟล์:


พบ -ชื่อ


สิ่งนี้สามารถตีความได้ว่า "ดูในไฟล์และไดเรกทอรีย่อยทั้งหมดที่อยู่ในเส้นทางที่กำหนด และพิมพ์ชื่อไฟล์ที่มีสตริงการค้นหาในชื่อ" (ไม่ใช่ในเนื้อหา)


แอปพลิเคชั่นอื่นของ พบ ใช้สำหรับค้นหาไฟล์ที่มีขนาดตามตัวอย่างด้านล่าง โดยที่ user ปีเตอร์

ต้องการค้นหาไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันหรือหนึ่งในไดเร็กทอรีย่อยที่ใหญ่กว่า 5 MB:


ปีเตอร์:~> หา . -ขนาด +5000k

psychotic_chaos.mp3

ปีเตอร์:~> หา . -ขนาด +5000k

psychotic_chaos.mp3


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


ปีเตอร์:~> หา . -name "*.tmp" -exec rm {} \;


ปีเตอร์:~>

ปีเตอร์:~> หา . -name "*.tmp" -exec rm {} \;


ปีเตอร์:~>


เพิ่มประสิทธิภาพ!

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


วิธีการทำงานที่สมจริงยิ่งขึ้นคือการใช้ไพพ์ (|) และ xargs เครื่องมือกับ rm เป็นอาร์กิวเมนต์ ด้วยวิธีนี้ rm คำสั่งจะถูกเรียกเมื่อบรรทัดคำสั่งเต็มเท่านั้น แทนที่จะเป็นทุกไฟล์ ดูบทที่ 5 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้การเปลี่ยนเส้นทาง I/O เพื่อให้งานประจำวันง่ายขึ้น

ต่อมา (ในปี พ.ศ. 1999 ตามหน้าคู่มือ หลังจาก 20 ปีของ พบ), ค้นหา ได้รับการพัฒนา โปรแกรมนี้ใช้ง่ายกว่า แต่มีข้อจำกัดมากกว่า พบเนื่องจากผลลัพธ์จะขึ้นอยู่กับฐานข้อมูลดัชนีไฟล์ที่อัพเดตเพียงวันละครั้งเท่านั้น ในทางกลับกัน การค้นหาใน ค้นหา ฐานข้อมูลใช้ทรัพยากรน้อยกว่า พบ จึงแสดงผลได้แทบจะในทันที


ลีนุกซ์ส่วนใหญ่ใช้ ค้นหา ทุกวันนี้ การค้นหาที่ปรับปรุงความปลอดภัย เวอร์ชั่นทันสมัยของ ค้นหา ที่ป้องกันไม่ให้ผู้ใช้ได้รับผลลัพธ์ที่พวกเขาไม่มีสิทธิ์ในการอ่าน ไฟล์ใน รากโฮมไดเร็กทอรีของเป็นตัวอย่างดังกล่าว ซึ่งปกติไม่สามารถเข้าถึงได้โดยสาธารณะ ผู้ใช้ที่ต้องการหาคนที่รู้เกี่ยวกับ C เชลล์อาจออกคำสั่ง ค้นหา .cshrcเพื่อแสดงผู้ใช้ทั้งหมดที่มีไฟล์การกำหนดค่าที่กำหนดเองสำหรับ C เชลล์ สมมติว่าผู้ใช้ ราก และ สัตว์ตัวเมีย กำลังรัน C เชลล์ จากนั้นเฉพาะไฟล์

/home/เจนนี่/.cshrc จะถูกแสดงไม่ใช่หนึ่งใน รากโฮมไดเร็กทอรีของ ในระบบส่วนใหญ่

ค้นหาเป็นลิงค์สัญลักษณ์ไปยังโปรแกรม slocate:


บิลลี่:~> ls -l /usr/bin/ค้นหา

lrwxrwxrwx 1 root slocate 7 ต.ค. 28 14:18 /usr/bin/locate -> slocate*

บิลลี่:~> ls -l /usr/bin/ค้นหา

lrwxrwxrwx 1 root slocate 7 ต.ค. 28 14:18 /usr/bin/locate -> slocate*

ผู้ใช้งาน Tina ได้ใช้ ค้นหา เพื่อค้นหาแอปพลิเคชันที่เธอต้องการ:


ทีน่า:~> ค้นหา acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/usr/local/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/bin/acroread

ทีน่า:~> ค้นหา acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/usr/local/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/bin/acroread

ไดเร็กทอรีที่ไม่มีชื่อ ถัง ไม่สามารถมีโปรแกรมได้ - ไม่มีไฟล์ปฏิบัติการ มีความเป็นไปได้สามทางที่เหลือ ไฟล์ใน / usr / local / bin เป็นคนเดียว Tina ต้องการ: มันเป็นลิงค์ไปยังเชลล์สคริปต์ที่เริ่มโปรแกรมจริง:


ทีน่า:~> ไฟล์ /usr/local/bin/acroread

/usr/local/bin/acroread: ลิงก์สัญลักษณ์ไปยัง ../Acrobat4/bin/acroread


ทีน่า:~> ไฟล์ /usr/local/Acrobat4/bin/acroread

/usr/local/Acrobat4/bin/acroread: ข้อความสคริปต์เชลล์เป้าหมายที่เรียกใช้งานได้


ทีน่า:~> ไฟล์ /usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-bit LSB executable, Intel 80386, เวอร์ชัน 1, ลิงก์แบบไดนามิก (ใช้

ทีน่า:~> ไฟล์ /usr/local/bin/acroread

/usr/local/bin/acroread: ลิงก์สัญลักษณ์ไปยัง ../Acrobat4/bin/acroread


ทีน่า:~> ไฟล์ /usr/local/Acrobat4/bin/acroread

/usr/local/Acrobat4/bin/acroread: ข้อความสคริปต์เชลล์เป้าหมายที่เรียกใช้งานได้


ทีน่า:~> ไฟล์ /usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-bit LSB executable, Intel 80386, เวอร์ชัน 1, ลิงก์แบบไดนามิก (ใช้


ที่ใช้ร่วมกัน ลิบส์) ไม่ เปลือยเปล่า เพื่อให้เส้นทางสั้นที่สุดเท่าที่จะเป็นไปได้เพื่อให้ระบบไม่ต้องค้นหานานเกินไปทุกครั้งที่ผู้ใช้ต้องการรันคำสั่งเราเพิ่ม / usr / local / bin ไปยังเส้นทางและไม่ใช่ไดเร็กทอรีอื่นซึ่ง

มีไฟล์ไบนารีของโปรแกรมเฉพาะหนึ่งโปรแกรมเท่านั้นในขณะที่ / usr / local / bin มีประโยชน์อื่น ๆ

โปรแกรมอีกด้วย


คำอธิบายคุณสมบัติทั้งหมดของ .อีกครั้ง พบ และ ค้นหา สามารถพบได้ในหน้าข้อมูล


3.3.3.4. คำสั่ง grep


3.3.3.4.1. การกรองสายทั่วไป


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


เจอร์รี่:~> grep -a ค้นหา .bash_history

หา . -name userinfo คน find

ค้นหา ../ -name common.cfg

เจอร์รี่:~> grep -a ค้นหา .bash_history

หา . -name userinfo คน find

ค้นหา ../ -name common.cfg


ประวัติการค้นหา

มีประโยชน์ในกรณีเหล่านี้คือฟังก์ชันการค้นหาใน ทุบตี, เปิดใช้งานโดยกด Ctrl+R ในครั้งเดียว เช่น ในตัวอย่างที่เราต้องการตรวจสอบว่าเราทำได้อย่างไร พบ อีกครั้ง:


โทมัส ~> ^R

(reverse-i-search)`find': ค้นหา `/home/thomas` -name *.xml

โทมัส ~> ^R

(reverse-i-search)`find': ค้นหา `/home/thomas` -name *.xml

พิมพ์สตริงการค้นหาของคุณที่พร้อมท์การค้นหา ยิ่งคุณพิมพ์อักขระมากเท่าใด การค้นหาก็จะยิ่งจำกัดมากขึ้นเท่านั้น สิ่งนี้จะอ่านประวัติคำสั่งสำหรับเซสชันเชลล์นี้ (ซึ่งเขียนถึง

.bash_history ในโฮมไดเร็กทอรีของคุณเมื่อคุณออกจากเซสชันนั้น) ระบบจะแสดงสตริงการค้นหาล่าสุดของคุณ หากคุณต้องการดูคำสั่งก่อนหน้าที่มีสตริงเดียวกัน ให้พิมพ์ Ctrl+R อีกครั้ง


ดูหน้าข้อมูลบน ทุบตี สำหรับข้อมูลเพิ่มเติม

UNIX ทั้งหมดที่มีความเหมาะสมเพียงเล็กน้อยมีพจนานุกรมออนไลน์ ลินุกซ์ก็เช่นกัน พจนานุกรมคือรายการคำที่รู้จักในไฟล์ชื่อ คำ, ตั้งอยู่ที่ /usr/share/dict. ในการตรวจสอบการสะกดคำที่ถูกต้องอย่างรวดเร็ว ไม่จำเป็นต้องใช้โปรแกรมกราฟิก:


วิลเลียม:~> grep พินกวิน /usr/share/dict/words


วิลเลียม:~> grep เพนกวิน /usr/share/dict/words

เพนกวิน เพนกวิน

วิลเลียม:~> grep พินกวิน /usr/share/dict/words


วิลเลียม:~> grep เพนกวิน /usr/share/dict/words

เพนกวิน เพนกวิน


พจนานุกรมกับรายการคำ

การแจกแจงบางส่วนเสนอ Dict คำสั่งซึ่งมีคุณสมบัติมากกว่าการค้นหาคำในรายการ

ใครคือเจ้าของโฮมไดเร็กทอรีที่อยู่ถัดจากฉัน นี่มันเบอร์โทรศัพท์เขา!


ลิซ่า:~> grep gdbruyne / etc / passwd

gdbruyne:x:981:981:Guy Debruyne โทร 203234:/home/gdbruyne:/bin/bash

ลิซ่า:~> grep gdbruyne / etc / passwd

gdbruyne:x:981:981:Guy Debruyne โทร 203234:/home/gdbruyne:/bin/bash


แล้ว E-mail address ของ Arno อีกครั้งคืออะไร?


serge:~/mail> grep -i อาร์โน *

ส่งเมล์: ถึง:

send-mail: ในวันจันทร์ที่ 24 ธันวาคม 2001 Arno.Hintjens@celeb.com เขียนว่า:

serge:~/mail> grep -i อาร์โน *

ส่งเมล์: ถึง:

send-mail: ในวันจันทร์ที่ 24 ธันวาคม 2001 Arno.Hintjens@celeb.com เขียนว่า:

ค้นหาและค้นหามักใช้ร่วมกับ grep เพื่อกำหนดข้อความค้นหาที่จริงจัง สำหรับข้อมูลเพิ่มเติม โปรดดูบทที่ 5 เกี่ยวกับการเปลี่ยนเส้นทาง I/O


3.3.3.4.2. อักขระพิเศษ


ตัวละครที่มีความหมายพิเศษต่อเปลือกจะต้องเป็น หนี. อักขระหลีกใน Bash คือแบ็กสแลช เช่นเดียวกับในเชลล์ส่วนใหญ่ นี้จะนำความหมายพิเศษของอักขระต่อไปนี้ออกไป เชลล์รู้เกี่ยวกับอักขระพิเศษบางตัวในบรรดา /, ., ? และ *. รายการทั้งหมดสามารถพบได้ในหน้าข้อมูลและเอกสารประกอบสำหรับเชลล์ของคุณ


ตัวอย่างเช่น สมมติว่าคุณต้องการแสดงไฟล์ "*" แทนไฟล์ทั้งหมดในไดเร็กทอรี คุณจะต้องใช้


น้อยลง \*


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: