ซ่อนไดเรกทอรีการทำงานปัจจุบันในเทอร์มินัล


133

ตามค่าดีฟอลต์เทอร์มินัลพรอมต์จะแสดงข้อมูลดังนี้

user@system:/folder1/folder2/folder3/folder4$

ยิ่งคุณเข้าไปในระบบไฟล์ได้ลึกเท่าไหร่พื้นที่เหลือน้อยสำหรับการพิมพ์คำสั่ง ฉันสามารถเปลี่ยนสิ่งนี้เพื่อแสดงเฉพาะสิ่งที่ชอบ:

>

ฉันหมายถึงฉันสามารถพิมพ์pwdเพื่อแสดงว่าฉันอยู่ที่ไหน ;)


1
นี่ควรเป็นความคิดเห็น แต่ฉันไม่สามารถแสดงความคิดเห็นขอโทษ นอกเหนือจากการซ่อนไดเรกทอรีปัจจุบันค่า PS1 ต่อไปนี้จะแยกคำสั่ง bash ของคุณอย่างชัดเจน:export PS1="\n___"
สวัสดีชาวโลก

ทดลองใช้โซลูชันของ Oli แบบอักษรสีใช้งานได้ดีในเทอร์มินัล: ส่งออก PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:'
linbianxiaocao

คำตอบ:


153
export PS1='\u@\h: '

นั่นส่งผลoli@bert:ให้ฉันพร้อม

หากคุณต้องการบางสิ่งที่เรียบง่ายอย่างที่คุณต้องการลองทำสิ่งนี้:

export PS1='> '

คุณสามารถแนบไฟล์นั้นไว้ที่ส่วนท้ายของ~/.bashrcไฟล์เพื่อให้มันคงอยู่ระหว่างการเข้าสู่ระบบ

คุณสามารถสร้างสรรค์ด้วยสีได้ นี่คือสิ่งที่ฉันใช้บนเซิร์ฟเวอร์ของฉัน:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

การให้ (มองเห็นได้ง่ายบนพื้นหลังสีดำแบบเต็ม):

อาคารของฉัน

คำศัพท์อักขระที่ยอมรับได้ใน PS1


2
คุณสามารถมีการขึ้นบรรทัดใหม่ (\ n) เป็นส่วนหนึ่งของพรอมต์ดังนั้นคุณสามารถใส่ข้อมูลทั้งหมดและ '>' ในบรรทัดแยก
ak2

ฉันพบการปรับแต่งเชลล์ "สุดขั้ว" ครั้งแรกใน msysGit เชื่อหรือไม่ ฉันถูกดัดแปลงให้เป็นโลกแห่งการทุบตีทันที มีข้อมูลทั้งหมด (ไดเรกทอรีปัจจุบันของฉันสาขาปัจจุบันเช็คเอาต์จาก Git repo สถานะของดัชนี Git ... ) ที่นั่นยอดเยี่ยมมาก ฉันวางแผนที่จะทำสิ่งที่คล้ายกับการติดตั้ง Ubuntu ที่ฉันเพิ่งวางไว้บนแล็ปท็อปเครื่องเก่า (ควบคู่กับ Windows XP)
dgw

3
รูปแบบที่ใช้ในการตั้งค่าสีคืออะไร
Rakib

1
@SyedRakibAlHasan ลองecho -e "\e[31mHello World\e[0m"หรือecho -e "\033[31mHello\e[0m World"ในเทอร์มินัลที่ควรจะให้เบาะแส แหล่งที่มา
ดาก้า

103

เพียงเพื่อขยายคำตอบของ Oli (และเพื่อให้ฉันมีคั่นหน้าสำหรับสัญลักษณ์สั้น ๆ เหล่านั้น):

bash prompt ( stefano@linux:~$) เป็นเพียงหนึ่งในสองพรอมต์ที่คุณอาจเห็น:

  • PS1 : พรอมต์เริ่มต้นที่คุณเห็นเมื่อคุณเปิดเชลล์

    PS1มันคุ้มค่าถูกเก็บไว้ในตัวแปรสภาพแวดล้อมที่เรียกว่า หากต้องการดูค่าของมันให้พิมพ์

    echo $PS1

    สิ่งนี้จะให้สิ่งที่คุณต้องการ

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    หากต้องการเปลี่ยนคุณสามารถตั้งค่าใหม่สำหรับตัวแปร:

    export PS1="\u > "

    สิ่งนี้จะส่งผลให้เกิดการแจ้งเตือนเช่นนี้:

    stefano > 
  • PS2 : เป็นพรอมต์ที่สองของคุณ สิ่งนี้จะปรากฏขึ้นเมื่อคำสั่งไม่เสร็จสิ้น พิมพ์echo "asdและกด Enter พร้อมต์รองจะให้คุณป้อนบรรทัดเพิ่มเติมจนกว่าคุณจะปิดเครื่องหมายจุลภาคคว่ำ

  • PS3เป็นพรอมต์ที่ใช้สำหรับselect(2)

  • PS4เป็นพรอมต์ที่ใช้สำหรับข้อความแสดงแทน สแต็คร่องรอย (ค่าเริ่มต้น: +)

หากต้องการทำการเปลี่ยนแปลงอย่างถาวรคุณจะต้องเพิ่มส่วนท้าย.bash_profile(หรือ.bashrcดูคำถามนี้ ) ในไดเรกทอรีหลักของคุณ

นี่คือรายการย่อที่สมบูรณ์แบบมากหรือน้อยที่คุณสามารถใช้เมื่อเขียนสิ่งเหล่านี้:

  • \a     ตัวละคร 'เบลล์'
  • \A     เวลา 24 ชั่วโมง
  • \d     วันที่ (เช่นอ. 21 ธ.ค. )
  • \e     ตัวละคร 'หลบหนี'
  • \h     ชื่อโฮสต์ (สูงสุด "." แรก)
  • \H     ชื่อโฮสต์
  • \j     จำนวนงานที่กำลังทำงานอยู่ (ps)
  • \l     tty ปัจจุบัน
  • \n     ฟีดบรรทัด
  • \t     เวลา (hh: mm: ss)
  • \T     เวลา (hh: mm: ss, รูปแบบ 12 ชั่วโมง)
  • \r     การคืนสินค้า
  • \s     เชลล์ (เช่น bash, zsh, ksh .. )
  • \u     ชื่อผู้ใช้
  • \v     รุ่นทุบตี
  • \V     สตริงการปล่อย Bash แบบเต็ม
  • \w     ไดเรกทอรีการทำงานปัจจุบัน
  • \W     ส่วนสุดท้ายของไดเรกทอรีการทำงานปัจจุบัน
  • \!     ดัชนีปัจจุบันในประวัติศาสตร์
  • \#     ดัชนีคำสั่ง
  • \$     A "#" ถ้าคุณรูทมิฉะนั้น "$"
  • \\     แบ็กสแลชตัวอักษร
  • \@     เวลา (รูปแบบ 12 ชม. พร้อม am / pm)

แน่นอนคุณสามารถแทรกสตริงตัวอักษรใด ๆ และคำสั่งใด ๆ :

export PS1="\u \$(pwd) > "

โดย$(pwd)ที่แทนที่ "เอาต์พุตของ" pwd

  • หากการทดแทนคำสั่งถูก Escape เช่นเดียวกับ\$(pwd)มันจะถูกประเมินทุกครั้งที่มีการแจ้งเตือนไม่เช่น$(pwd)นั้นจะเป็นการประเมินเพียงครั้งเดียวเมื่อเริ่มทุบตี

หากคุณต้องการให้พรอมต์แสดงคุณสมบัติสีคุณสามารถใช้รหัสสีของ bash เพื่อทำเช่นนั้นได้ รหัสประกอบด้วยสามส่วน:

40;33;01
  • ส่วนแรกก่อนเครื่องหมายอัฒภาคแสดงถึงลักษณะข้อความ

    • 00 = ไม่มี
    • 01 = ตัวหนา
    • 04 = ขีด
    • 05 = กระพริบตา
    • 07 = ย้อนกลับ
    • 08 = ปกปิด
  • ส่วนที่สองและสามคือสีและสีพื้นหลัง:

    • 30 = สีดำ
    • 31 = สีแดง
    • 32 = สีเขียว
    • 33 = สีเหลือง
    • 34 = สีฟ้า
    • 35 = สีม่วงแดง
    • 36 = สีฟ้า
    • 37 = สีขาว

แต่ละส่วนสามารถละเว้นได้โดยเริ่มจากด้านซ้าย เช่น "1" หมายถึงตัวหนา "1; 31" หมายถึงตัวหนาและสีแดง และคุณจะได้รับ terminal ของคุณพิมพ์สีโดยการหลบหนีการเรียนการสอนด้วยและลงท้ายด้วย\33[ m33 หรือ 1B ในเลขฐานสิบหกคือเครื่องหมาย ASCII "ESCAPE" (อักขระพิเศษในชุดอักขระ ASCII) ตัวอย่าง:

"\33[1;31mHello World\33[m"

พิมพ์ "Hello World" ด้วยสีแดงสดใส


ฉันผนวกเข้าexport PS1='\[\033[1;31m\]\w\[\033[00m\] \$> 'กับ/etc/bash.bashrcแต่ดูเหมือนว่าจะไม่มีอะไรเปลี่ยนแปลง ... มันทำงานได้ในแต่ละครั้ง แต่ฉันไม่สามารถทำให้มันถาวรได้
Jared Tritsch

8

อีกทางเลือกหนึ่งคือการย่นเส้นทางไดเรกทอรีการทำงานให้สั้นลงเมื่อมันยาวเกินไป: ตัดไดเรกทอรีการทำงานของพรอมต์คำสั่งเทอร์มินัล

สร้างสคริปต์หลามขนาดเล็กซึ่งใช้ตรรกะการตัดแต่งที่ต้องการ

ตัวอย่าง: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

ตอนนี้ทดสอบจาก terminal:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

หากคุณเห็นด้วยกับผลลัพธ์เพียงแค่ผนวกคำสั่งลงใน ~ / .bashrc ของคุณ


Exa ... ~ / short.pwd.py, ส่งออก ... ~ / .short.pwd.py ฉันคิดว่าทั้งคู่ต้องเหมือนกัน ไม่ว่าคุณจะวางคำสั่งพิเศษทั้งในที่หรือไม่ทำอย่างนั้นก็ตาม แต่นี่เป็นคำตอบที่ยอดเยี่ยม ..
MycrofD

7

ฉันมักจะต้องการทำสิ่งนี้เป็นการชั่วคราว นี่คือสิ่งที่ฉันทำ:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

ฉันหวังว่านี่จะช่วยให้ใครบางคน


1

สำหรับผู้ใช้ macOS:

open ~/.bash_profile

ในตอนท้ายของไฟล์เพิ่มบรรทัดต่อไปนี้และบันทึก

export PS1='\u:\w\$ '

ผลที่โฮมไดเร็กตอรี่:

user: ~$

ที่นี่ u สำหรับผู้ใช้ w สำหรับไดเรกทอรีการทำงานปัจจุบัน $ คือการแจ้งให้แสดง

คุณสามารถลองรูปแบบต่อไปนี้:

export PS1='$ '

เพียงแค่มี $ เป็นพรอมต์ไม่มีอะไรอื่น เหมือนกับ:

$ 

0

สิ่งที่ช่วยฉันได้คือ: export PS1 = '$'

เพื่อให้ได้สิ่งนี้ทุกครั้งที่คุณเปิดเทอร์มินัลให้เขียนคำสั่งในตอนท้ายของ. bashrc ซึ่งคุณสามารถเปิดได้ด้วย 'cd' ตามด้วย 'gedit .bashrc'

หวังว่านี่จะช่วยได้ ทำงานออกมาสำหรับฉัน

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