ฉันจะทำให้เส้นทางปัจจุบันของ bash prompt สั้นลงเหลือหนึ่งตัวอักษรต่อไดเรกทอรีได้อย่างไร


9

ฉันจำไม่ได้ว่าที่ไหน แต่ฉันเห็นเส้นทางปัจจุบันของ bash prompt สั้นลงในวิธีที่น่าสนใจ: ทุกไดเรกทอรีที่อยู่ในเส้นทาง (ยกเว้นอันสุดท้าย) จะถูกแทนที่ด้วยอักษรตัวแรกเท่านั้น ยกตัวอย่างเช่น: จะลงไปpath/to/some/directoryp/t/s/directory

ฉันจะสร้างพฤติกรรมดังกล่าวได้อย่างไร


PS1คุณไม่สามารถทำเช่นนี้ใน คุณจะต้องตั้งค่าPS1ให้มีตัวแปร ( PS1='${SHORT_PWD}\\$') และปรับปรุงตัวแปร$PROMPT_COMMANDนั้น
Gilles 'หยุดความชั่วร้าย'

@Gilles 'SO- หยุดความชั่วร้าย' แน่นอนว่าคุณสามารถทำได้โดยตรงหากคุณใช้เครื่องหมายอัญประกาศคู่คุณต้องใช้\$()คำสั่งแบ็กสแลชแทน
bac0n

คำตอบ:


8

หลังจากเล่นกับสิ่งนี้ไปซักพักฉันก็ได้รับคำตอบที่คุณต้องการ

เพิ่มไฟล์นี้ลงในไฟล์. bashrc ของคุณในโฮมไดเร็กตอรี่ของคุณออกจากเทอร์มินัลแล้วเช่าอีกครั้งและคุณจะได้รับพร้อมท์

PS1='$(eval "sps")$ '
sps() {
   echo "$PWD" | sed -r 's|/([^/]{,2})[^/]*|/\1|g'
}

มันใช้ฟังก์ชั่นที่ประกาศsps()ในการประเมินเส้นทางทุกครั้งที่ตัวแปรPS1ซึ่งเป็นพรอมต์จะปรากฏขึ้น

กล่าวคือ

/ho/de/De/Ap/Ti$ pwd
/home/deth/Desktop/Apps/Tivo
/ho/de/De/Ap/Ti$ 

หรือ ... หากคุณยืนยันในจดหมายฉบับหนึ่ง

PS1='$(eval "sps")$ '
sps() {
   echo "$PWD" | sed -r 's|/(.)[^/]*|/\1|g'
}

สิ่งที่แสดง:

/h/d/D/A/T$ pwd
/home/deth/Desktop/Apps/Tivo
/h/d/D/A/T$ 

ขอบคุณ Meer พรอมต์ของฉันคือการลบuser@pcส่วน ฉันจะจัดการสิ่งนี้ได้อย่างไร
อเล็กซ์

3

หากต้องการตัดชื่อไดเรกทอรีทั้งหมดยกเว้นชื่อสุดท้าย:

PS1='$(eval "sps")$ '                                                                                
sps() {                                                                                              
    python -c "import sys; dirs = sys.argv[1].split('/'); print '/'.join(d[:1] for d in dirs[:-1]) + '/' + dirs[-1]" $PWD
}

มันไม่ทำงานเมื่อฉันเปลี่ยนไดเรกทอรี?
Aditya Varma

1

ย่อชื่อทั้งหมดยกเว้นชื่อสุดท้ายที่ไม่มีไพ ธ อน:

user:/h/u/D/C/current$ 
sps() {
    echo `dirname $PWD` | sed -r 's|/(.)[^/]*|/\1|g'
}
PS1='\u:$$(eval "sps")/\W\$ '
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.