คำถามติดแท็ก prompt

สตริงอักขระที่แสดงโดยเชลล์แบบโต้ตอบเพื่อส่งสัญญาณเชลล์กำลังรออินพุตผู้ใช้

21
การทำให้เทอร์มินัลและสภาวะแวดล้อมเชลล์ของคุณเป็นสี?
ฉันใช้เวลาส่วนใหญ่ทำงานกับสภาพแวดล้อม Unix และใช้โปรแกรมจำลองเทอร์มินัล ฉันพยายามใช้สีบนบรรทัดคำสั่งเนื่องจากสีทำให้การแสดงผลมีประโยชน์และใช้งานง่ายขึ้น มีตัวเลือกอะไรบ้างเพื่อเพิ่มสีให้กับสภาพแวดล้อมของเทอร์มินัล เทคนิคอะไรที่คุณใช้ คุณพบข้อผิดพลาดอะไรบ้าง น่าเสียดายที่การรองรับสีอาจแตกต่างกันไปตามประเภทของเทอร์มินัลการตั้งค่า TERM ยูทิลิตี้การใช้งานบั๊กกี้ ฯลฯ นี่คือเคล็ดลับบางอย่างจากการตั้งค่าของฉันหลังจากการทดลองมากมาย: ฉันมักจะตั้งค่าTERM=xterm-colorซึ่งได้รับการสนับสนุนในโฮสต์ส่วนใหญ่ (แต่ไม่ทั้งหมด) ฉันทำงานกับโฮสต์ที่แตกต่างกันหลายเวอร์ชันระบบปฏิบัติการที่แตกต่างกัน ฯลฯ ฉันใช้ทุกอย่างจาก macOS X, Ubuntu Linux, RHEL / CentOS / Scientific Linux และ FreeBSD ฉันพยายามทำให้สิ่งต่าง ๆ เรียบง่ายและเป็นสามัญถ้าเป็นไปได้ ฉันทำงานกลุ่มโดยใช้ GNU screenซึ่งเพิ่มความสนุกอีกชั้น ระบบปฏิบัติการจำนวนมากตั้งค่าสิ่งต่าง ๆ เช่นdircolorsและโดยค่าเริ่มต้นและฉันไม่ต้องการแก้ไขสิ่งนี้บนโฮสต์ที่แตกต่างกันหลายร้อยแห่ง ดังนั้นฉันจึงพยายามที่จะยึดติดกับค่าเริ่มต้น ฉันปรับแต่งค่าสีของเทอร์มินัลแทน ใช้สีสำหรับบางคำสั่ง Unix ( ls, grep, less, vim) และพรอมต์ทุบตี คำสั่งเหล่านี้ดูเหมือนจะใช้ " …
262 shell  bash  colors  prompt 

7
เทอร์มินัลพรอมต์ไม่ถูกต้อง
ฉันมีปัญหาเมื่อฉันพิมพ์คำสั่งที่ยาวมากใน bash เทอร์มินัลจะไม่แสดงสิ่งที่ฉันพิมพ์อย่างถูกต้อง ฉันคาดหวังว่าถ้าฉันมีคำสั่งดังต่อไปนี้: username@someserver ~/somepath $ ssh -i /path/to/private/key myusername@something.someserver.com คำสั่งควรแสดงผลสองบรรทัด แต่มันมักจะพันไปรอบ ๆ และเริ่มเขียนที่ส่วนบนของพรอมต์ของฉันค่อนข้างเป็นดังนี้: myreallylongusername@something.somelongserver.comh -i /path/to/private/key หากฉันตัดสินใจย้อนกลับและเปลี่ยนการโต้แย้งบางอย่างไม่มีการบอกตำแหน่งที่เคอร์เซอร์จะปรากฏขึ้นบางครั้งในช่วงกลางของพรอมต์ แต่โดยทั่วไปจะอยู่บนบรรทัดด้านบนที่ฉันพิมพ์ ความสนุกสนานเพิ่มเติมเกิดขึ้นเมื่อฉันUpไปที่คำสั่งก่อนหน้า ฉันได้ลองใช้ทั้ง gnome-terminal และ terminator และใน i3 และ Cinnamon มีคนแนะนำว่านั่นคือพรอมต์ของฉันดังนั้นนี่คือ: \[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\] Ctrll, resetและclearทุกคนทำในสิ่งที่พวกเขาพูด แต่เมื่อฉันพิมพ์คำสั่งกลับมาหรือUpสิ่งเดียวกันเกิดขึ้น ฉันตรวจสอบและcheckwinsizeเปิดใช้งานในทุบตี สิ่งนี้เกิดขึ้นใน 80x24 และขนาดหน้าต่างอื่น ๆ นี่เป็นเพียงสิ่งที่ฉันเรียนรู้ที่จะอยู่ด้วยหรือไม่? มีชิ้นส่วนของเวทมนตร์ที่ฉันควรรู้หรือไม่? ฉันได้ตัดสินเพียงแค่ใช้พรอมต์สั้น ๆ แต่ก็ไม่สามารถแก้ไขปัญหาได้
171 bash  terminal  prompt 

5
ฉันสามารถใช้รหัสสีใดในการแจ้งเตือน PS1 ของฉัน
ฉันใช้หลายสีในพรอมต์ PS1 ของฉันเช่น \033]01;31\] # pink \033]00m\] # white \033]01;36\] # bold green \033]02;36\] # green \033]01;34\] # blue \033]01;33\] # bold yellow ฉันจะหารายการรหัสสีที่ฉันสามารถใช้ได้ที่ไหน ฉันดูColorize Bash Console Colorแต่ไม่ได้ตอบคำถามของฉันเกี่ยวกับรายการรหัสจริง มันจะดีถ้ามีรูปแบบที่อ่านได้มากขึ้นด้วย ดูเพิ่มเติมที่https://unix.stackexchange.com/a/127800/10043
132 bash  colors  prompt 

3
สัญลักษณ์และตัวอักษรที่ยอดเยี่ยมในรูปแบบการทุบตี
ฉันวิ่งข้ามภาพหน้าจอของเทอร์มินัลของใครบางคน: มีรายการของตัวละครทั้งหมดที่สามารถใช้ได้ใน Bash prompt หรือใครบางคนสามารถรับตัวละครสำหรับดาวและลูกศรขวาได้ไหม?
81 bash  prompt  unicode 

3
ฉันจะบอกได้อย่างไรว่าฉันอยู่ในเซสชั่น tmux จากสคริปต์ทุบตี?
ฉันชอบที่จะเก็บไว้bash_profileในที่เก็บคอมไพล์และโคลนมันกับเครื่องที่ฉันเข้าถึงเชลล์ได้ เนื่องจากฉันtmuxใช้เวลาส่วนใหญ่ฉันมีuser@hostสตริงในบรรทัดสถานะแทนที่จะเป็นจุดดั้งเดิมในเชลล์พรอมต์ มีบางเว็บไซต์ที่ฉันใช้tmuxติดตั้งไว้หรือฉันอาจไม่ได้ใช้งาน ฉันต้องการตรวจสอบเมื่อฉันไม่ได้อยู่ในtmuxเซสชั่นและปรับพรอมต์ของฉันตาม จนถึงตอนนี้วิธีการแก้ปัญหาของฉันที่อบในตอนนี้.bash_profileดูเหมือนว่า _display_host_unless_in_tmux_session() { # ??? } export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}' (การตรวจสอบทุกครั้งอาจไม่ใช่วิธีที่ดีที่สุดดังนั้นฉันจึงเปิดรับข้อเสนอแนะสำหรับวิธีที่ดีกว่าในการทำเช่นนี้การสคริปต์ Bash ไม่ใช่มือขวาของฉัน)
53 bash  prompt  tmux 

2
ทำไม ZSH ถึงลงท้ายด้วยเครื่องหมายเปอร์เซนต์ไฮไลต์?
ฉันพบสิ่งนี้ในบางโอกาสด้วยแอพพลิเคชั่นที่หลากหลาย ฉันมักจะคิดว่าเป็นเพราะผลผลิตถูกยกเลิกก่อน (ctrl + c เป็นต้น) หรือสิ่งที่คล้ายกันและ zsh เติมอักขระบรรทัดใหม่ แต่ตอนนี้ความอยากรู้อยากเห็นได้รับสิ่งที่ดีที่สุดของฉันเพราะมันดูเหมือนจะไม่ทำอย่างนี้ zsh ทุบตี Sequenceโปรแกรมเป็นสิ่งที่ฉันดึงออกมาจากหนังสือในขณะอ่านบน Java การรับรองและเพียงแค่ต้องการที่จะดูว่ามันจะรวบรวมและวิ่ง ฉันสังเกตเห็นว่ามันไม่ได้ใช้println()วิธีการจากSystem.outแพ็คเกจ / คลาส print()แต่มันใช้เก่าธรรมดา การขาดอักขระขึ้นบรรทัดใหม่เป็นเหตุผลที่ทำให้ฉันได้รับสัญลักษณ์นี้หรือไม่?
46 bash  zsh  prompt  newlines 

10
ทำให้โหมดแสดงพรอมต์ zsh ของฉันในโหมด vi
ฉันใช้bindkey -v(สำหรับ bash-ers set -o viฉันคิดว่ามันใช้งานได้ในโหมด zsh ด้วย) หรือโหมด vi (m) แต่มันทำให้ฉันสับสนว่าฉันไม่มีคิวภาพใด ๆ ที่จะบอกฉันว่าฉันอยู่ในโหมดแทรกหรือโหมดคำสั่ง ไม่มีใครรู้ว่าฉันจะทำให้โหมดการแสดงพร้อมท์ของฉันปรากฏขึ้นได้อย่างไร?
44 shell  prompt  zsh 

3
ใช้ตัวแปรเพื่อจัดเก็บรหัสสีของเทอร์มินัลสำหรับ PS1 หรือไม่
ในของ.bashrcฉันฉันใช้รหัสสีเทอร์มินัล ANSI เพื่อ colorize บิตต่าง ๆ ดูเหมือนว่านี้: PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ ' ที่ไหนvirtual_envและgit_branchฟังก์ชั่นทุบตีสิ่งที่ส่งออกใน stdout ตอนนี้เพื่อให้ง่ายต่อการอ่านและแก้ไข, PS1ฉันต้องการที่จะเก็บรหัสสีในตัวแปรและหมายถึงพวกเขาแทนการฝังพวกเขาโดยตรงใน ดังนั้นฉันจึงมีตัวแปรหลายอย่างเช่นนี้: GREEN="\[\033[32m\]" YELLOW="\[\033[33m\]" RESET="\[\033[0m\]" ฉันต้องการที่จะสามารถเขียนสิ่งที่ชอบ: PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ ' แต่วิธีนี้ใช้ไม่ได้ - รหัสสีจะแสดงขึ้นมาในพรอมต์ราวกับว่ามันกำลังหลบหนี สีที่ทำงานอย่างถูกต้องถ้าผมใช้คำพูดสองแทนแต่แล้วก็พรอมต์เพียงการเปลี่ยนแปลงเมื่อฉันทำPS1source ~/.bashrc ฉันได้พยายามสิ่งอื่น ๆ ที่ผมเคยเห็นคนทำ - การใช้printfและไม่ใช้คำพูดเดียวสำหรับสีวาง\[และ\]ในPS1แทนของตัวแปรสี แต่ไม่มีอะไรน่าจะทำงาน ฉันจะใช้ตัวแปรสำหรับรหัสสีได้อย่างไร

4
ฉันจะเปลี่ยน bash prompt เพื่อแสดงไดเร็กตอรี่ทำงานได้อย่างไร?
ฉันสามารถพิมพ์ dir ที่ทำงานในปัจจุบันของฉันเช่นนี้ myPrompt$ pwd /Users/me/myDir ฉันต้องการเปลือกของฉันเป็นแบบนี้ /Users/me/myDir$ pwd /Users/me/myDir เป็นไปได้ไหม ฉันจะทำมันได้อย่างไร
33 bash  osx  prompt 

1
ในสถานการณ์ใดที่ใช้ PS2, PS3, PS4
เมื่อฉันเข้าสู่เชลล์ฉันเห็นพรอมต์ที่มีค่าถูกเก็บไว้ใน PS1 ฉันยังพบพรอมต์อื่น (แต่ไม่ทราบว่าอันไหน) เมื่อฉันใช้ไวยากรณ์เอกสารที่นี่: bc << HERE > แต่นั่นคือพรอมต์ทุกประเภท ฉันเคยพบมาแล้ว สถานการณ์ประเภทใดทำให้เกิดพรอมต์ที่แตกต่างกัน

5
วิธีทำให้เทอร์มินัลแสดง user @ machine เป็นตัวอักษรหนา
ฉันเคยเห็นในบางช็อตหน้าจอ (จำไม่ได้ว่าอยู่ที่ไหนบนเว็บ) ว่าเทอร์มินัลสามารถแสดง[username@machine /]$ตัวอักษรตัวหนา ฉันรอคอยที่จะได้รับสิ่งนี้เช่นกันเพราะฉันมักจะพบว่าตัวเองเลื่อนผ่านเอาต์พุตยาว ๆ เพื่อค้นหาบรรทัดแรกหลังจากคำสั่งของฉันลำบาก ฉันจะทำให้ชื่อผู้ใช้เป็นตัวหนาและมีสีได้อย่างไร?

5
วิธีที่ดีกว่าในการยอมรับรูปแบบของ 'ใช่' จากเชลล์พรอมต์
การทดสอบการใช้งานเชลล์สคริปต์ที่ฉันเขียนพบว่าผู้คนมีความคาดหวังที่แตกต่างกันเกี่ยวกับวิธีตอบคำถามที่คาดหวังว่า 'ใช่' เป็นคำตอบ ดูการเปลี่ยนแปลงในตัวอย่างรหัสด้านล่าง แน่นอนว่าต้องมีวิธีที่ดีกว่าที่ฉันคิดไว้ ของคุณคืออะไรอ่านและรูปแบบสั้นใช้เวลากับเรื่องนี้? read -p 'Answer this question with yes: ' answer if [ "$answer" = 'Y' -o "$answer" = 'YES' -o "$answer" = 'Yes' -o "$answer" = 'y' -o "$answer" = 'yes' -o some-alternate-condition ]; then echo 'Surely this can be written better?' fi

15
คุณทำการปรับแต่งอะไรบ้างในโปรไฟล์เชลล์เพื่อเพิ่มประสิทธิภาพ
ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันรู้ว่าบางคนมีสคริปต์เริ่มต้นและบางคนปรับเปลี่ยนข้อความในแบบของฉัน นักพัฒนาซอฟต์แวร์รายหนึ่งใช้นามแฝงสั้น ๆ สำหรับเส้นทางที่ยาวที่เขามักเข้าชมและคำสั่งที่ใช้บ่อย การปรับแต่งที่มีประสิทธิภาพทั้งหมดที่คุณทำในโปรไฟล์ UNIX ของคุณคืออะไรเพื่อเพิ่มประสิทธิภาพและความสะดวกในการใช้งาน?

3
แสดงคำสั่งในแถบหัวเรื่อง xterm
My Bash Prompt กำลังตั้งค่า xterm titlebar โดยใช้ลำดับต่อไปนี้: PS1='\033]0;\u@\h>\w\007' มีวิธีง่าย ๆ ในการแสดงคำสั่งปัจจุบันในแถบชื่อเรื่อง ตัวอย่างเช่นถ้าฉันกำลัง tailing ไฟล์โดยใช้ผมต้องการที่แถบชื่อของฉันที่จะพูดtail -f foo.logtail -f foo.log

6
ไดเรกทอรีปัจจุบันอย่างย่อใน shell prompt?
vim มีคุณสมบัติที่ดีมากซึ่งมันใช้ในเส้นทางของมันเมื่อมันยาว: มันย่อเส้นทางไปยังเอกสารในแท็บที่ด้านบน มีวิธีทำสิ่งที่คล้ายกับนี้หรือไม่เพื่อให้ bash prompt ของฉันไม่เป็นเช่นนี้: rfkrocktk@work-laptop ~/Documents/Projects/Work/maventest/src/main/java/com/tkassembled/ $
23 bash  prompt 

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