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

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

3
วิธีรวมคำสั่งใน PS1 ของ Bash โดยไม่หยุดการคำนวณความยาวบรรทัด
Tonin ชี้ให้เห็นข้อผิดพลาดในของฉันพรอมต์เริ่มต้น ตัวอย่างที่น้อยที่สุด: ตั้งค่า PS1: PS1='$(exit_code=$?; [[ $exit_code -eq 0 ]] || printf %s $(tput setaf 1) $exit_code $(tput sgr0) " ")$ ' ณ จุดนี้พรอมต์จะมีลักษณะดังนี้: $ ทริกเกอร์เอาท์พุทรหัสออกจากการทำงาน: false ตอนนี้พรอมต์ประกอบด้วยรหัสออกเป็นสีแดงที่จุดเริ่มต้นของบรรทัด: 1 $ กด-Ctrlr พิมพ์ "false" ตอนนี้พรอมต์มีเฉพาะการค้นหา: (reverse-i-search)`false': false Enterกด ประวัติเทอร์มินัลที่ได้รับจะมีสิ่งต่อไปนี้: 1 $ch)`false': false ผลลัพธ์ที่คาดหวัง: 1 $ false นั่นคือดูเหมือนว่าเอาต์พุตการค้นหาประวัติจะถูกผสมกับพรอมต์และซ่อนคำสั่งจริงที่ถูกเรียกใช้ ฉันพยายามหลีกเลี่ยงปัญหานี้โดยใช้PROMPT_COMMAND : set_exit_code() …
13 bash  prompt 

2
เป็นไปได้ที่จะกำหนดค่าล็อกอิน TTY ผ่านอุปกรณ์เสียง (รหัสมอร์สหรือคล้ายกัน)?
หนึ่งในแง่มุมที่น่าสังเวชที่สุดของงานประจำวันของฉันคือความจำเป็นที่จะต้องตรวจสอบปัญหาที่เกิดขึ้นกับเครื่องจักรที่กระจายอยู่ในสถานที่ห่างไกลทั่วโลกที่ไม่สามารถเข้าถึงเครือข่ายไปยังโลกภายนอกได้เป็นครั้งคราว บางครั้งอาจเป็นไปได้สำหรับพนักงานในพื้นที่สามารถใช้งาน 3G หรือโมเด็มที่คล้ายกันเพื่อให้เข้าถึงได้ แต่บ่อยครั้งที่เป็นไปไม่ได้เนื่องจากไม่มีสัญญาณหรือขาดความสามารถด้านเทคนิคในไซต์ ในกรณีเหล่านี้ฉันต้องใช้โทรศัพท์เพราะช่างในท้องถิ่น (หรือบางครั้งภารโรง) พร้อมที่จะทำงานกับฉันพิมพ์คำสั่งที่ฉันท่องไว้และตอบสนองกับผลลัพธ์มักจะมีคนที่มีลินุกซ์ จำกัด หรือไม่มีคอมพิวเตอร์ ประสบการณ์. บ่อยครั้งที่การได้รับช่างที่มีคุณสมบัติมากขึ้นไปยังไซต์จะต้องทำการเช่าเหมาลำเที่ยวบิน ฉันสามารถยืนยันได้ว่าการพูดคุยกับใครบางคนผ่านการแก้ไขไฟล์ใน vi ที่ไม่ทราบความแตกต่างระหว่าง 'slash' และ 'backslash' วิธีการเปลี่ยน shift เพื่อสร้างโคลอนแทนเซมิโคลอนนั้นเจ็บปวดอย่างมาก "โอเคตอนนี้มันกำลังแสดงสิ่งที่น่าขันตามมาด้วยสิ่งที่ดูแปลก ๆ แล้วก็อีกสิ่งที่น่าประหลาดใจ" โอ้และมันก็ส่งเสียงบี๊บพร้อมข้อความแสดงข้อผิดพลาดที่ฉันไม่ได้อ่าน โดยทั่วไปฉันใช้คนในไซต์เป็นเครื่องมือแปลงเทอร์มินัลโทรศัพท์ช้ามากและมีอัตราความผิดพลาดสูงอย่างน่าอัศจรรย์ ฉันมีความคิดที่จะตัดชายกลางและใช้ลำโพงและไมโครโฟนบนคอมพิวเตอร์และบอกเทคโนโลยีให้ถือโทรศัพท์มือถือของพวกเขาขึ้นไปที่เครื่องและใช้มันเป็น 'โมเด็ม' อะคูสติกที่โรงเรียนเก่าแก่มาก เรียกใช้โปรแกรมเทอร์มินัลบนคอมพิวเตอร์ของฉันซึ่งจะแปลงสายของฉันเป็นลำดับเสียงที่สามารถส่งผ่านทางโทรศัพท์ไปยังเครื่อง Linux และถูกแปลงกลับเป็นคำสั่งผลลัพธ์ของการที่จะได้รับการแปลงเป็นเสียงกลับไป โทรศัพท์ ฯลฯ ทำให้ฉันมีผลกับขั้วช้ามาก มีวิธีการไม่กี่วิธีในการส่งข้อมูลซึ่งอาจอยู่รอดการส่งผ่านโทรศัพท์มือถือเช่นรหัสมอร์สหรือ OliviaMode ฉันหวังว่าจะได้รับข้อมูลเกี่ยวกับแพ็คเกจเพื่อทำสิ่งนี้ให้สำเร็จทั้งโดยรวมหรือเป็นหลาย ๆ ชิ้นที่ฉันสามารถใช้เพื่อสร้างโซลูชันนี้หรือเสนอแนวคิดอื่น ๆ เกี่ยวกับวิธีที่ฉันสามารถทำงานนี้ได้สำเร็จ Google ไม่ได้ใช้งานอะไรเลยยกเว้น 'OliviaMode' ดังกล่าวข้างต้นซึ่งอาจใช้เป็นโปรโตคอลการส่งผ่านได้
13 audio  prompt  tty 

2
เปลี่ยนสีของพรอมต์ขึ้นอยู่กับผู้ใช้หรือรูทใน zsh
ใน zsh คุณสามารถมี%#ในPS1(หรือPROMPTตัวแปรอะไรก็ได้) ซึ่งโดยทั่วไปหมายถึงแสดง%ว่าผู้ใช้หรือแสดง#ถ้ารูต ฉันสงสัยว่ามีวิธีใดที่จะส่งผลกระทบต่อสิ่งนี้%หรือไม่หรือ#เปลี่ยนสีขึ้นอยู่กับว่าเป็นผู้ใช้หรือรูท (สีแดงสำหรับรูต, สีฟ้าสำหรับผู้ใช้) วิธีที่ชัดเจนคือการเปลี่ยนPS1ในรูทของฉัน~/.zshrcแต่พิจารณา นี่เป็นสัญลักษณ์พิเศษแล้วฉันสงสัยว่าอาจจะไม่มีวิธีที่ฉันสามารถใช้แบบเดียวกันPS1สำหรับทั้งสองได้ ... สิ่งที่เฉพาะเจาะจงสำหรับ%#มันสำหรับ zsh (ฉันแน่ใจว่ามีแฮ็กอื่น ๆ ที่ฉันสามารถทำได้เช่นกัน ถ้างบแล้ว)
13 shell  zsh  colors  prompt 

2
วิธีเปลี่ยนพรอมต์ล็อกอิน tty
เพื่อความชัดเจนฉันไม่ได้อ้างถึง/etc/issue(แสดงก่อนหน้าพรอมต์) หรือ/etc/motd(แสดงหลังเข้าสู่ระบบ) แต่เป็นพรอมต์ซึ่งขณะนี้ hostname login: สำหรับการวัดที่ดีฉันใช้ Arch Linux แต่ฉันเชื่อว่าคำตอบน่าจะเป็นแบบไขว้
12 terminal  login  prompt  tty 

3
เปลี่ยนสี PS1 ตามสีพื้นหลังหรือไม่
ฉันเรียนรู้ว่าฉันสามารถเปลี่ยนรูปแบบของ PS1 ได้โดยเฉพาะสีของสตริง จากนั้นเป็นไปได้หรือไม่ที่จะเปลี่ยนสีตามสีพื้นหลังของเปลือกหอย? หรือฉันจะตรวจจับสีพื้นหลังของเปลือกได้อย่างไร
12 bash  terminal  prompt  colors 


1
ฉันจะหยุดสี bash shell PS1 เพื่อหยุดที่ส่วนท้ายของคำสั่งได้อย่างไร
ฉันมีสี PS1 ที่กำหนดเองซึ่งฉันมีคำสั่งเชลล์จริงในสีที่แตกต่างดังนั้นฉันจึงสามารถดูว่าคำสั่งใดที่ฉันพิมพ์และแยกออกจากเอาต์พุตคำสั่งอย่างรวดเร็ว สมมติว่าสีใน PS1 ถูกตั้งค่าเป็น 'สีน้ำเงิน' สำหรับพรอมต์คำสั่งและสีเริ่มต้นในเปลือกของฉันเป็นสีขาว ฉันพิมพ์คำสั่งเช่น ls (ls -l เป็นสีน้ำเงิน) เอาต์พุตที่สร้างขึ้นบรรทัดแรกยังคงเป็นสีน้ำเงิน เส้นที่เหลือทั้งหมดมาเป็นสีขาว สิ่งที่ฉันต้องการคือผลลัพธ์ทั้งหมดหลังจากคำสั่งให้เป็น 'สีขาว' ตัวอย่างอื่น: ฉันพิมพ์คำสั่ง 'cat' สีจะเป็นสีน้ำเงิน เอาท์พุทมาเอาท์พุททั้งหมดเป็นสีฟ้า ฉันต้องการให้ผลลัพธ์เป็น 'สีขาว' ในขณะที่ยังคงพร้อมท์คำสั่งที่ฉันพิมพ์ 'สีน้ำเงิน' ในบางคำสั่งมันดีคำสั่งอื่น ๆ สีเดียวกันล้นในบรรทัดแรกของการส่งออกแล้วสีเริ่มต้นเตะในและคำสั่งอื่น ๆ บางส่วนเอาท์พุททั้งหมด (เช่น cat) มีสีเดียวกัน มีวิธีการเก็บเฉพาะคำสั่งที่ฉันพิมพ์ในสีเดียวและที่เหลือเป็นค่าเริ่มต้นหรือไม่? ฉันใช้ OSX แก้ไข # 1 นี่คือภาพหน้าจอที่ @ derobert เชื่อมโยงกับความคิดเห็นที่แสดงสิ่งที่ฉันกำลังมองหา
12 bash  prompt 

1
ล้างบรรทัดพรอมต์เก่าในทุบตีเพื่อประหยัดพื้นที่เลื่อน
ชุดรูปแบบเทอร์มินัลของฉันเคยเป็นเช่นนี้ แต่ฉันคิดว่าพรอมต์เสียพื้นที่มากมาย และต่อมาฉันก็มีความคิดว่าฉันสามารถทำความสะอาดพรอมต์ทุกครั้งที่ฉันมีคำสั่ง ฉันใช้ทุบตีวิธีหนึ่งคือใช้preexec_invoke_execฟังก์ชั่น ฉันใช้คำสั่งต่อไปนี้เพื่อทำความสะอาดตัวอักษรพรอมต์ล่าสุด: echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m" เพื่อให้เครื่องนั้นสะอาดมากเช่นนี้ แต่ตอนนี้ปัญหาของฉันจะมีปัญหาถ้าผมต้องการที่จะใช้คำสั่งหลายในหนึ่งบรรทัดfor i in ...กล่าวว่าเมื่อผมใช้ นี่คือเวอร์ชั่นเต็มของฟังก์ชั่นใน. bashrc ของฉัน preexec () { echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"; echo -n "$1"; echo -ne " \033[37;2m["; echo -n "$2"; echo -ne "]\033[0m\n"; } preexec_invoke_exec () { [ -n "$COMP_LINE" ] && return # do nothing …
11 bash  shell  terminal  prompt 

5
พรอมต์สีใน KornShell
ตามโพสต์ StackOverflow นี้เป็นไปได้ที่จะมีพรอมต์สีใน KornShell ฉันไม่สามารถหาวิธีการทำสิ่งนี้ได้ ฉันสามารถใช้สี: echo -e "\033[34mLinux\033[00m" ให้เอาต์พุต "Linux" สีน้ำเงินเช่นเดียวกับ: printf "\033[34mLinux\033[00m" อย่างไรก็ตามเมื่อฉันรวมรหัสการยกเว้นลงในPS1ตัวแปรที่พร้อมท์ของฉันพวกเขาจะไม่ถูกยกเว้น ฉันต้องทำอย่างไรจึงจะได้รับพรอมต์สี นอกเหนือจากการเป็นเครื่องดูดฝุ่นสำหรับ eyecandy ฉันพบว่าพรอมต์สีมีประโยชน์เมื่อแยกวิเคราะห์การมองเห็น
11 colors  prompt  ksh 

6
Bash: แสดงสถานะทางออกในพรอมต์:
GREEN="\e[1;32m" RED="\e[1;31m" NONE="\e[m" get_exit_status(){ es=$? if [ $es -eq 0 ] then echo -e "${GREEN}${es}${NONE}" else echo -e "${RED}${es}${NONE}" fi } get_path(){ #dummy function echo "PATH" } PROMPT_COMMAND='exitStatus=$(get_exit_status)' ต่อไปนี้ให้ exitStatus ที่ถูกต้อง แต่ตัวแปรสีไม่ได้ถูกขยาย: PS1='${RED}\h $(get_path) ${exitStatus}${NONE} ' อย่างไรก็ตามสีด้านล่างให้สีแก่ฉัน แต่สถานะการออกไม่ได้อัปเดต: PS1="${RED}\h $(get_path) ${exitStatus}${NONE} " วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร? ฉันจะแก้ไขได้อย่างไรเพื่อให้ exitStatus และสีทั้งสองทำงานได้?
11 bash  prompt 

4
คำสั่ง Bash prompt execute ทุกครั้งที่มีพรอมต์ใหม่ปรากฏขึ้น
ฉันมีพรอมต์ต่อไปนี้ในทุบตีซึ่งแสดงสาขา git ปัจจุบัน: PS1+="$(git_prompt)" #git_prompt is a function in my .bashrc ซึ่งทำงานเมื่อฉันจัดหา. bashrc แต่ไม่ใช่เมื่อฉันเปลี่ยนสาขาดังนั้น PS1 var จะได้รับการประเมินเฉพาะเมื่อฉันจัดหาที่. bashrc แต่ควรได้รับการประเมินทุกครั้งที่มีการแสดงพรอมต์ใหม่ สิ่งนี้สามารถทำได้ด้วย bash 4.3?
11 bash  prompt 


2
คุณจะสร้าง RPROMPT ใน zsh ได้อย่างไรเมื่ออัพเดททุกครั้ง
ฉันRPROMPTถูกตั้งค่าให้แสดงข้อมูล SVN vcs_infoใช้ RPROMPT=${vcs_info_msg_0_}มันอ่าน เรียกว่าใช้vcs_info precmd()อย่างไรก็ตาม RPROMPT จะไม่อัปเดตเมื่อฉันเปลี่ยนไดเรกทอรี มันทำงานได้ก็ต่อเมื่อฉันเรียกใช้พรอมต์อีกครั้ง (โดยแหล่งที่มา ~ / .zshrc หรือพรอมต์) และจะไม่เปลี่ยนแปลงตาม chdir เว้นแต่ว่าฉันจะเรียกใช้พรอมต์อีกครั้ง มีวิธีใดบ้างที่จะเปลี่ยนพฤติกรรมนี้

3
tmux ไม่กำหนดค่า color PS1 ให้พร้อม
เมื่อเร็ว ๆ นี้ฉันตัดสินใจที่จะเปลี่ยนตัวแปร PS1 ของฉันเพื่อรองรับสี Solarized ที่สวยงามเพื่อความเพลิดเพลินในการรับชมเครื่อง เมื่อไม่ได้อยู่ในเซสชั่น tmux ทุกอย่างยอดเยี่ยม! สายรุ้งม้ายูนิคอร์นและพรอมต์ที่แตกต่าง! เย็น! อย่างไรก็ตามปัญหาอยู่ภายใน tmux อย่างไรก็ตาม ฉันได้รับการตรวจสอบว่าค่าของ PS1 เป็นสิ่งที่ผมคาดหวังว่ามันจะเป็นและเช่นเดียวกับมันคือเมื่อ tmux \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]ไม่ได้ทำงานคือ นามแฝงทั้งหมดของฉัน ฯลฯ ใน. bash_profile ของฉันยังทำงานได้ตามที่คาดไว้ tmux ยังแสดงสีโดยไม่เกิดเหตุการณ์ตามecho -ne "\033[1;33m hi"ที่คาดgls --colorไว้ บรรทัดที่เกี่ยวข้องในปัจจุบันใน. bash_profile ของฉันคือexport PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"ถึงแม้ว่าในตอนแรกฉันจะหาสคริปต์ที่อยู่ในไฟล์. bash_prompt เพื่อจัดการกับเงื่อนไขบางอย่าง ฯลฯ ฉันพยายามเปลี่ยนกลับเป็นเวอร์ชันที่ง่ายกว่า การดำเนินการbashจะทำให้พรอมต์เปลี่ยนสี แต่ต้องทำในแต่ละบานหน้าต่าง export PS1=[that long string I've already posted]จะไม่ …
11 bash  osx  tmux  prompt 

1
ฉันจะถามรหัสผ่านโดยใช้ GUI ในขณะที่ใช้ sudo ในสคริปต์ได้อย่างไร
ฉันใช้ Trisquel GNU / Linux กับ GNOME Flashback Desktop Environment ฉันต้องการพรอมต์รหัสผ่าน GUI สำหรับผู้ใช้เพื่อดำเนินการคำสั่งด้วยsudoในสคริปต์ ตัวอย่างพิจารณาสคริปต์ต่อไปนี้: zenity --question --text="Do you want to install this package?" if [[ $? -eq 0 ]]; then sudo apt-get install package else zenity --warning fi ซึ่งจะต้องดำเนินการดังต่อไปนี้ (Run) คือไม่ได้อยู่ในอาคาร ดังนั้นจึงจำเป็นต้องขอรหัสผ่านเพื่อที่จะเรียกใช้คำสั่งด้วยsudoมิฉะนั้นจะไม่สามารถทำงานได้ ดังนั้นฉันจะถามรหัสผ่านโดยใช้ GUI ได้อย่างไร

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