ตัวอย่างเช่นฉันได้git
ติดตั้งบนระบบของฉัน แต่ฉันจำไม่ได้ว่าติดตั้งไว้ที่ใดดังนั้นคำสั่งใดเหมาะสมที่จะค้นหาคำตอบนี้
ตัวอย่างเช่นฉันได้git
ติดตั้งบนระบบของฉัน แต่ฉันจำไม่ได้ว่าติดตั้งไว้ที่ใดดังนั้นคำสั่งใดเหมาะสมที่จะค้นหาคำตอบนี้
คำตอบ:
ถ้ามันอยู่ในเส้นทางของคุณแล้วคุณสามารถเรียกใช้อย่างใดอย่างหนึ่งหรือtype git
คำสั่งได้มีปัญหาในการเส้นทางที่เหมาะสม (สับสนระหว่างสภาพแวดล้อมและไฟล์ dot) สำหรับคุณจะได้รับเพียงเส้นทางที่มีการโต้แย้งwhich git
which
type
-p
ถ้ามันไม่ได้อยู่ในเส้นทางของคุณแล้วมันจะเป็นการดีที่สุดที่จะมองหามันด้วยlocate -b git
มันจะพบสิ่งที่ชื่อว่า 'git' locate -b git | fgrep -w bin
มันจะเป็นรายการยาวดังนั้นอาจจะดีที่จะมีสิทธิ์ด้วย
locate
ไม่สิ้นสุด (มันเร็วมาก) แต่สำหรับผู้ที่ไม่รู้ตัวมันlocate
เป็นแค่ข้อมูลล่าสุดในการอัพเดทฐานข้อมูลล่าสุดซึ่งจะทำงานโดยอัตโนมัติทุกวันบน Ubuntu ของฉัน รีเฟรชคำสั่งsudo updatedb
... นอกจากนี้locate
ได้สร้างความสามารถในการ regex ดังนั้นคำสั่งเช่นนี้การทำงาน: locate -br "^git$"
... วิธี -b` จำกัด การค้นหาเพื่อเพียงbasename ... หรือไม่มี-b
จะค้นหาชื่อพา ธ เต็ม .. นอกจากนี้ จะค้นหาเฉพาะเส้นทางที่คุณกำหนดค่าให้ค้นหา .. ไม่มีการควบคุมบรรทัดคำสั่งของตัวกรอง regex อื่น ๆ
type
เป็น shell builtin ที่บอกนามแฝงและเช่นนั้นและwhich
เป็นโปรแกรมภายนอกที่แสดงเส้นทางให้ฉันไปสู่การปฏิบัติการ ... แม้ว่าจะมี builtin ที่เข้ามา วิธีที่ปฏิบัติการไม่ได้ถูกเรียก
which
คือมันไม่รู้เกี่ยวกับเชลล์ในตัวและฟังก์ชั่นของเชลล์ (ซึ่งเกี่ยวข้องเมื่อคุณสงสัยว่าการพิมพ์คำสั่งจะทำอะไร) และมันใช้ระบบที่แตกต่างกัน$PATH
ในบางระบบ
มาตรฐาน POSIXcommand -v git
วิธีที่จะทำเช่นนี้คือ ระบบเหมือน UNIX ทั้งหมดควรสนับสนุนสิ่งนี้
whereis git
และคุณได้รับเส้นทางไปยังคำสั่ง
นั่นคือถ้า git อยู่ในตัวแปร PATH ของคุณในกรณีที่คุณติดตั้งมันไม่ผ่านตัวจัดการแพคเกจของคุณมันมีความซับซ้อนมากขึ้นและคุณควรใช้find
หรือlocate
คำสั่ง
which
ยังได้รับการสนับสนุน
คำตอบอื่น ๆ ที่นี่ดูเหมือนจะมุ่งไปทางส่วนใหญ่เป็นรุ่นที่ทันสมัยของ Linux ดังนั้นหากคุณเกิดขึ้นที่จะใช้git
ในระบบปฏิบัติการที่ไม่ได้มีlocate
, whereis
, which
หรือapropos
(เช่น Solaris, HPUX ฯลฯ ) find
แล้วมีอยู่เสมอสแตนด์บายเก่า
find / -name git
หนึ่งบางรุ่นเก่าของระบบดังกล่าวข้างต้นคุณอาจจำเป็นต้องมีตัวเลือกที่จ่ายให้กับ-print
find
find / -name git -print
และถ้าคุณใช้locate
ให้แน่ใจว่าคุณเรียกใช้updatedb
เป็นระยะ ( locate.updatedb
บนอนุพันธ์ BSD บางส่วน)
type
ฉันไม่เคยรู้เกี่ยวกับ :) นั่นคือรายการเพลงที่แน่นอน!
find
จะทำการค้นหาในระดับลึกครั้งแรกของระบบไฟล์โดยเริ่มจากทุกที่ที่คุณรูท ดังนั้นfind / -name git
จะข้ามทั้งระบบของคุณ หากคุณรู้ว่าโปรแกรมนั้นอยู่บนเส้นทางของคุณคุณก็สามารถทำได้IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done
แม้ว่าระบบไฟล์ Unix จะได้รับอนุญาตมากพอที่จะทำให้เกิดความPATH
เสียหายได้หลายวิธีหากมีอักขระแปลก ๆ อยู่ในตัว
PATH
, สิ่งที่ถูกต้อง (ที่มีคำเตือนเช่นเดียวกับก่อน) IFS=":"; for dir in $PATH; do find "$dir" -name git; done
เป็น นอกจากนี้เพื่อย้ำคำตอบนี้ควรใช้โดยผู้ที่ไม่สามารถเข้าถึงtype
หรือwhich
หรือ locate
เกือบจะไม่มีใคร คำตอบของ @ Arcege ถูกต้อง
เพื่อให้ได้เส้นทางที่จะติดตั้งโปรแกรมที่คุณใช้งานทั้งหรือwhereis
which
หากคุณเกิดขึ้นที่จะลืมมันเป็นชื่อที่คุณสามารถใช้apropos
กับคำพ้องความหมายหรือคำอธิบายของยูทิลิตี้ของคุณเช่นจะได้พบกับapropos "version control"
git
ต่อไปนี้เป็นหลักสูตรwhatis
คำสั่งสรุปสั้น ๆ ฟังก์ชั่นของโปรแกรม อย่างไรก็ตามสิ่งนี้ไม่ได้ใช้กับโปรแกรมและฟังก์ชั่นทั้งหมดในระบบของคุณ whatis "the meaning of life, universe and everything"
ลองยกตัวอย่างเช่น
which
command" แน่นอน :)