Solaris บนเซิร์ฟเวอร์ของเราฉันพบว่าไม่ทำงานซึ่งเป็นวิธีการปกติที่ผมใช้grep -r
grep
ดูเหมือนว่าegrep
จะมีพฤติกรรมเหมือนกัน
เนื่องจากฉันไม่สามารถควบคุมเครื่องได้มีวิธีgrep
ทำการค้นหาแบบเรียกซ้ำหรือไม่? หรือฉันจะต้องท่อส่งออกของfind
เข้ามาgrep
?
Solaris บนเซิร์ฟเวอร์ของเราฉันพบว่าไม่ทำงานซึ่งเป็นวิธีการปกติที่ผมใช้grep -r
grep
ดูเหมือนว่าegrep
จะมีพฤติกรรมเหมือนกัน
เนื่องจากฉันไม่สามารถควบคุมเครื่องได้มีวิธีgrep
ทำการค้นหาแบบเรียกซ้ำหรือไม่? หรือฉันจะต้องท่อส่งออกของfind
เข้ามาgrep
?
คำตอบ:
ฉันไม่คุ้นเคยกับ Solaris แต่ถ้าคุณเปลี่ยนจาก GNU / linux เป็น Solaris คุณจะพบว่าคำสั่งส่วนใหญ่จะทำงานแตกต่างกันเล็กน้อย เครื่องมือของ Unix รุ่น GNU มีคุณสมบัติเพิ่มเติมที่หายไปใน Unixes "กรรมสิทธิ์"
คุณสามารถดาวน์โหลด GNU grep (s) ที่นี่แล้วรวบรวมและติดตั้ง
หากคุณมีสิทธิ์เข้าถึงรูทคุณอาจต้องการรันการตั้งค่า --prefix = / usr / local ซึ่งยูทิลิตี้ติดตั้งลงใน / usr / local
หากคุณไม่มีสิทธิ์การเข้าถึงรูทคุณอาจต้องการรันการกำหนดค่า --prefix = $ {HOME} เพื่อให้ยูทิลิตี้ติดตั้งในโฮมไดเร็กตอรี่ของคุณ
--prefix=${HOME}}/.local
อาจจะแนะนำให้เลือกมากกว่า ... ไม่ต้องวุ่นวายกับโฮมไดshare
lib
share
? นั่นต้องเป็นไดเรกทอรีขยะ!" rm -rf
Doh!
หากคุณต้องการใช้find
นี่เป็นวิธีที่เร็วที่สุด:
find . -type f -exec grep pattern {} +
อย่างไรก็ตาม Gnu grep มีโอกาสมากที่ติดตั้งบนเครื่องของคุณแล้ว
มันเป็นส่วนหนึ่งของการติดตั้งเริ่มต้นบน Solaris /usr/gnu/bin/grep
11 เหมือนกันสำหรับ Solaris 10 /usr/sfw/bin/ggrep
ที่คุณหาได้ใน ในรุ่นเก่าอาจถูกติดตั้งจาก sunfreeware หรือที่เก็บอื่นตรวจสอบ/usr/local/bin/grep
และค้นหา/opt/csw/bin/grep
ตำแหน่งทั่วไป
-name
find
-name
จะไม่ค้นหาไฟล์ แต่ค้นหาเฉพาะชื่อไฟล์ที่ไม่ใช่สิ่งที่ OP ต้องการ
ใช้ggrepแทนหากติดตั้งไว้
เช่นค้นหา "mysearchstring" จากไดเรกทอรีปัจจุบันไปยังไดเรกทอรีย่อยทั้งหมด ( -R
) และแสดงชื่อไฟล์และเส้นทางสำหรับการจับคู่ ( -H
) และละเว้นไฟล์ไบนารี ( -I
) อย่าลืม*
คำสั่งสุดท้าย
/usr/sfw/bin/ggrep -H -R -I "mysearchstring" *
ggrep ตั้งอยู่ใน/usr/sfw/bin
คุณสามารถเพิ่มลงในโปรไฟล์ของคุณด้วยคำสั่งส่งออกเพื่อให้คุณสามารถเรียกได้จากบรรทัดคำสั่งโดยตรง
PATH=$PATH:/usr/sfw/bin
export PATH
รุ่น Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise
ggrep
เป็น grep GNU แน่นอน ขอบคุณ!
ดาวน์โหลดack
สคริปต์ perl แบบสแตนด์อโลนจากhttp://betterthangrep.com/ใส่ไว้ในของคุณ$HOME/bin
และเรียนรู้การใช้งานแทน ฉันพบว่ามันเป็นโฆษณาที่ดีกว่า grep สำหรับการใช้งานจำนวนมากในงานพัฒนาประจำวันของฉัน
Solaris grep ไม่มี-r
ตัวเลือก
คุณสามารถใช้คำสั่งดังต่อไปนี้
find . -type f | xargs grep 'sometext'
find /opt/ -name "*.sh" -type f | xargs grep "start"
ใช่คุณจำเป็นต้องใช้ GNU grep โดยส่วนตัวฉันไม่ควรพลาดแฟล็ก "-r" เพราะคุณสามารถทำสิ่งเดียวกันได้ด้วยการรวมกันfind
และgrep
แต่สิ่งนี้เตือนว่าการมีเครื่องมือ GNU ที่มีอยู่ในกล่อง Solaris ของคุณเป็นสิ่งที่ฉันจะพิจารณาแนวปฏิบัติที่ดีที่สุด ดังนั้นเราไปที่นี่:
ฉันจะไม่ไปเกี่ยวกับการดาวน์โหลดซอร์สโค้ดจากที่ต่างๆบนอินเทอร์เน็ตแล้วสร้างตัวคุณเอง ที่ไม่จำเป็น หากคุณต้องการให้โซลาริสของคุณมีเครื่องมือ GNU ทั่วไปที่มีอยู่ให้ทำดังนี้
หากคุณอยู่บนSolaris 10คุณควรได้รับ Solaris 10 Companion Disk ที่ใช้ในการจัดจำหน่ายโดยดวงอาทิตย์ แต่ตอนนี้อาศัยอยู่ที่นี่ ส่วนตัวฉันจะทำให้มันเป็นกระต่ายเสมอเพื่อติดตั้งเนื้อหาของดิสก์นี้หรืออย่างน้อยที่สุดส่วน GNU ที่สำคัญที่สุด เป็นส่วนหนึ่งของ JumpStart (หรืออะไรก็ตามที่คุณใช้) สำหรับเซิร์ฟเวอร์ใหม่ในองค์กรของคุณ!
ถ้าคุณอยู่บนโซลาริส 11ชีวิตนั้นง่ายกว่ามาก โดยปกติแล้วเครื่องมือของ GNU จะถูกติดตั้งตามค่าเริ่มต้น แต่ไม่ทั้งหมดจะถูกแพร่กระจายไปยังโซนในเครื่อง IFS ระบบบรรจุภัณฑ์บน Solaris 11 ทำให้ชีวิตของคุณง่ายขึ้นมากดังนั้นคุณควรจะย้ายไปที่ Solaris 11 (เหตุผลอื่น ๆ อีกมากมาย) รายการแพ็กเกจที่คุณควรพิจารณาให้มีอยู่เสมอสำหรับโซนใด ๆ ได้แก่ :
pkg: // Solaris / Archiver / GNU-tar pkg: // Solaris / พัฒนา / GNU-binutils pkg: // Solaris / วินิจฉัย / ด้านบน pkg: // Solaris / ไฟล์ / GNU-coreutils pkg: // Solaris / ไฟล์ / GNU-findutils pkg: // Solaris / ข้อความ / เพ่งพิศ pkg: // Solaris / ข้อความ / GNU-diffutils pkg: // Solaris / ข้อความ / GNU-grep pkg: // Solaris / ข้อความ / GNU-sed
และถ้าคุณใช้โฮสต์เพื่อวัตถุประสงค์ในการพัฒนา / สร้างคุณอาจต้องการเพิ่ม:
pkg: // Solaris / พัฒนา / สร้าง / GNU-แต่งหน้า pkg: // Solaris / พัฒนา / สร้าง / แต่งหน้า pkg: // Solaris / พัฒนา / GCC-45 pkg: // Solaris / system / หัว pkg: // Solaris / พัฒนา / สร้าง / autoconf pkg: // Solaris / พัฒนา / สร้าง / automake-110
โดยส่วนตัวแล้วฉันจะทำส่วนบน (อาจเป็นเครื่องมือ dev น้อยกว่า) ส่วนหนึ่งของการติดตั้งเริ่มต้นของ บริษัท ของฉันสำหรับเซิร์ฟเวอร์ / โซนใหม่ Solaris sysadmins มักจะยืนยันว่าแตกต่างจากโลก Linux แต่ไม่จำเป็นต้องทำ เพียงทำและทำให้เป็นส่วนหนึ่งของการติดตั้งเริ่มต้นของคุณ คุณจะไม่เสียใจ