จะไพพ์รายการคำสั่งที่แสดงโดยของ“ แท็บเสร็จสมบูรณ์” ได้อย่างไร?


12

เมื่อใช้คำสั่งใน bash ฉันชอบตัวเลือก double tab เพื่อแสดงคำสั่งที่มี คำสั่งบางคำมีการจับคู่ที่เป็นไปได้มากกว่าคำสั่งอื่น ๆ :

สกรีนช็อตของการเติมแท็บให้สมบูรณ์ http://img13.imageshack.us/img13/5541/picturemhy.jpg

มีวิธีที่ฉันสามารถไพพ์เอาท์พุทของแท็บดับเบิลไปยังที่ใดที่หนึ่งได้grepไหม? ฉันพบโพสต์ที่เกี่ยวข้องแต่ฉันก็ยังไม่แน่ใจว่าจะนำไปใช้กับไพพ์ได้อย่างไร


คุณคิดว่าคุณจะเข้าสู่grepRegex อย่างไร? (y or n or g[rep])? ฉันเกลียดที่จะพูดในแง่ร้าย แต่ฉันสงสัยว่าสิ่งนี้สามารถทำได้โดยไม่ต้องเพิ่มลงในรหัสทุบตี
Kevin

คำตอบ:


21

สำหรับคำสั่งใช้compgen -c:

$ compgen -c bas
basename
base64
bashbug
bash
basename
base64
bashbug

grepผลลัพธ์นี้คุณก็สามารถผ่านท่อ


+1 สำหรับคำสั่ง ... ส่วนที่น่าสนใจถัดไปอาจเป็นวิธีสร้างแป้นพิมพ์ลัดสำหรับสิ่งนี้
rozcietrzewiacz

3

ขึ้นอยู่กับคำตอบ @ Salutis ของฉันสร้างสคริปต์ซึ่งผมเรียกว่าcompและเก็บไว้ใน~/bin/compการค้นหาที่commands' aliasesและbuiltins(ธงตัวเลือก-cabดูรายการคนทุบตี ) มีพารามิเตอร์ที่สองตัวเลือกที่ถ้ามีท่อออกไปgrepและการค้นหาสำหรับ พารามิเตอร์ที่สอง

Usage: comp string [keyword-for-grep]

รหัส:

#!/bin/bash

if [ -z "$1" ]; then
    echo usage: comp string [keyword-for-grep]
    echo 
    exit
fi

if [ -z "$2" ]; then
    compgen -cab -- $1
    exit
fi

compgen -cab -- $1 | grep -i $2

โดยส่วนตัวแล้วฉันจะสนใจที่จะหาวิธีที่จะลบคำสั่งสุดท้ายจากประวัติเชลล์ในสคริปต์ (สิ่งที่เกี่ยวข้องhistory -d) เพื่อที่เมื่อค้นหาbashประวัติฉันจะไม่พบcompรายการ ฉันรู้ว่าฉันสามารถทำสิ่งนี้ได้ด้วยHISTIGNOREแต่ลินุกซ์นั้นค่อนข้างทรงพลังดังนั้นจึงต้องมีวิธีที่จะทำได้จากไฟล์สคริปต์ด้วยใช่ไหม?


1
แน่นอนคุณสามารถปรับสิ่งนี้ให้เหมาะกับความต้องการของคุณ แต่มันควรจะเริ่มต้น
ทำเครื่องหมาย

-3

ทำไมไม่ค้นหาสิ่งที่คุณกำลังมองหา?

ตัวอย่าง:

find / -name ec2* -executable -type f -perm -og+rx -print

รู้กรณีการใช้งานของคุณฉันสามารถสร้างตัวอย่างคำสั่งรายละเอียดเพิ่มเติม


2
กล่าวอีกนัยหนึ่งคุณสามารถนำสิ่งที่สำเร็จไปใช้มาใช้ใหม่ได้ แน่นอน แต่นั่นไม่จริงและไม่ใช่คำถามที่เกี่ยวกับ
Gilles 'ดังนั้นหยุดความชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.