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

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน

2
ทำซ้ำเอาต์พุตของคำสั่งใน bash โดยไม่มีเชลล์ย่อย
ฉันต้องการวนลูปผลลัพธ์ของคำสั่งโดยไม่สร้าง sub-shell หรือใช้ไฟล์ชั่วคราว เวอร์ชันเริ่มต้นของสคริปต์ของฉันมีลักษณะเช่นนี้ แต่สิ่งนี้ไม่ทำงานเนื่องจากจะสร้าง subshell และexitคำสั่งจะยกเลิก subshell แทนสคริปต์หลักที่ต้องการ เป็นส่วนหนึ่งของสคริปต์ที่มีขนาดใหญ่กว่ามากเพื่อกำหนดค่าการกำหนดเส้นทางนโยบายและจะหยุดการทำงานหากตรวจพบเงื่อนไขที่จะทำให้การกำหนดเส้นทางล้มเหลว sysctl -a 2>/dev/null | grep '\.rp_filter' | while read -r -a RPSTAT ; do if [[ "0" != "${RPSTAT[2]}" ]] ; then echo >&2 "RP Filter must be disabled on all interfaces!" echo >&2 "The RP filter feature is incompatible …

2
เชื่อมต่อกับเซสชันหน้าจอ byobu และดำเนินการคำสั่งหรือไม่
ในสคริปต์ฉันกำลังสร้างฉันกำลังทดลองกับวิธีการอัตโนมัติให้มากที่สุด หนึ่งในความท้าทายที่น่าสนใจคือการเชื่อมต่อกับหน้าจอ byobu และดำเนินการคำสั่ง ดังนั้นฉันจึงเริ่มต้นในสถานที่ที่ชัดเจนมองหาจำนวนเซสชันหน้าจอที่มี (เกมมี 3 windows ใน byobu และ lordquackstar มี 2 ผู้ใช้อยู่ในกรณีที่มีการแยก) game@quackgame:~$ screen -ls There is a screen on: 2019.byobu (01/05/2011 05:10:04 PM) (Attached) 1 Socket in /var/run/screen/S-game. มีเพียงอันเดียวที่นั่นดังนั้นฉันจึงตรวจสอบระบบ lordquackstar@quackgame:/home/game$ sudo ls -lAR /var/run/screen/ /var/run/screen/: total 0 drwx------ 2 game users 100 2011-01-06 09:18 S-game drwx------ …

5
คุณจำคำสั่งสุดท้ายที่ผ่านมา (n-th ได้อย่างไร) ของคำสั่งก่อนหน้าที่คุณใช้กับ bash ได้อย่างไร
บ่อยครั้งที่ฉันออกคำสั่งต่าง ๆ ในไฟล์เดียวกัน ตัวอย่างเช่น: $ youtube-dl aB54c4p0eo #I made this video id up on the spot $ mv aB54c4p0eo.flv kittens.flv $ vlc kittens.flv $ rm kittens.flv มีวิธีที่จะนำอาร์กิวเมนต์จากคำสั่งก่อนหน้ามาใช้ใหม่ในปัจจุบันเพื่อที่ฉันจะได้ไม่ต้องเขียนมันอีกหรือไม่?
9 bash 

4
การเปลี่ยน bash prompt
การตั้งค่าที่กำหนดว่าหน้าตาทุบตีคืออะไร โดยเฉพาะกับ Arch แต่ฉันมั่นใจว่าคนอื่นอยากรู้เรื่อง distros อื่น ๆ เช่นกันถ้ามันแตกต่างกัน ฉันต้องการใช้พรอมต์ของ Ubuntu
9 bash  prompt 

1
Bash เติมข้อความอัตโนมัติในเซสชัน ssh
ดูเหมือนว่าทุบตีไม่ต้องการคำสั่งเติมข้อความอัตโนมัติ (ตอนนี้สิ่งที่ฉันน่ารำคาญคือการเติมข้อความอัตโนมัติไม่ได้รับ apt-get) เมื่อฉันลงชื่อเข้าใช้ในเครื่องจาก SSH มีการตั้งค่าบางอย่างที่จะอนุญาตให้ทุบตีการเติมข้อความอัตโนมัติภายในเซสชัน ssh หรือไม่?

3
ทุบตั้งค่า PS1
ฉันกำลังพยายามกำหนดค่า PS1 ดังนี้ = สีเขียว "\ [\ E [32 1m \]" สีแดง = "\ E [0; 31m" = สีม่วง "\ E [0; 35m" STARTCOLOR = "\ [\ E [40m \]" ENDCOLOR = "\ [\ E [0m \]" ส่งออก PS1 = "$ STARTCOLOR $ สีเขียว \ u @ $ สีม่วง \ …
9 bash  prompt 

1
การทดแทนกระบวนการ bash ด้วยไฟล์ชั่วคราว
บางโปรแกรมต้องการไฟล์ของพวกเขาจะ seekable เช่นobjdumpไม่ $ objdump -D -b binary -m i8086 <(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p) objdump: Warning: '/proc/self/fd/11' is not an ordinary file มันจะสะดวกที่จะมีการทดแทนกระบวนการใช้ไฟล์ชั่วคราว ฉันสามารถดูได้ในหน้า man ที่ทุบตีสามารถย้อนกลับไปยังไฟล์ชั่วคราวด้วยการทดแทนกระบวนการ แต่ฉันสามารถขอให้เขาใช้ไฟล์ชั่วคราวได้หรือไม่? เช่นเดียวกับ'szsh=() $ objdump -D -b binary -m i8086 =(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p) /tmp/zsh1u1Nrw: file format …

3
วงเล็บปีกกา 'Binding'
ใน Bash echo a{b,c}d{e,f} พิมพ์ abde abdf acde acdf ผลลัพธ์ที่ฉันต้องการดูคือ abde acdf กล่าวอีกนัยหนึ่งเมื่อได้รับพารามิเตอร์Nฉันต้องการให้ Bash ใช้พารามิเตอร์i th ภายในวงเล็บปีกกาแต่ละคู่เพื่อสร้างสตริงN

3
วิธีใช้ตัวแปร plus glob ($ var *) ใน bash
ฉันมีปัญหากับสคริปต์ นี่คือรหัส #!/bin/bash date=`date +"%m-%d-%y"` dokuwiki="dokuwiki.$date*.toolbox.admin.tar.gz" if test -e $dokuwiki then echo "works" else echo "shits broken yo" fi ปัญหาของฉันฉันคิดว่าไม่พบไฟล์ที่แปลก ไฟล์เป็นดังนี้: dokuwiki.09-12-14-06-00.toolbox.admin.tar.gz ไชโย
2 bash 

1
สิ่งใดที่มีความสำคัญเหนือกว่าในการปฏิบัติภารกิจเบื้องหลัง
สองตัวอย่างที่ฉันมีคือ: echo hi & และ: (echo hi &) ครั้งแรกจะให้รหัสกระบวนการเป็นผลตอบแทน (เช่น"[1] 5627") ซึ่งการเพิ่มตัวดำเนินการที่มีความสำคัญนำสิ่งนี้ออก เกิดอะไรขึ้นที่จะทำให้สิ่งนี้? นอกจากนี้ยังมีวิธีการเพิ่มลำดับความสำคัญ แต่ยังมีงานพื้นหลังรายงานรหัสกระบวนการของพวกเขา?

3
วิธีการหยุด `grep 'จากการตัดทอนเอาต์พุตท่อ
มีวิธีใดที่จะมีechoที่ส่วนท้ายของไพพ์เพียงต่อท้ายเอาต์พุตปัจจุบันแทนที่จะลบทั้งหมดหรือไม่? ตัวอย่างเช่นฉันจะเก็บเอาท์พุทของฉันcatและgrepและเพิ่ม "END OF OUTPUT" ในตอนท้ายของเอาต์พุตจากไพพ์เดียวกันได้อย่างไร: $ cat file.txt | grep 'foo' | echo "END OF OUTPUT" something foo foo foo something END OF OUTPUT คล้ายกับวิธีการcat -ทำงาน: echo "START OF OUTPUT" | cat - file.txt
2 bash  pipe  echo 


1
ทำไม§ให้ฉันลบตัวละครสองตัวใน bash promt?
นี่เป็นปัญหาที่แปลกประหลาดมากและเฉพาะเจาะจงมากใน terminator เมื่อฉันพิมพ์อักขระ "§" ลงในหน้าต่างเทอร์มินัลแล้วกดแบ็คสเปซสองครั้งจะอนุญาตให้ฉันลบอักขระสองตัวออกแม้ว่าจะเป็นส่วนหนึ่งของสตริง PS1 ก็ตาม ขั้นตอนในการทำซ้ำ: พิมพ์ "§" ลงในเทอร์มินัล ลบ 2 ตัวอักษร ทำซ้ำ

4
BASH: หรือโอเปอเรเตอร์สำหรับตำแหน่ง $ 1
ฉันประสบปัญหาบางอย่างที่ตัวดำเนินการ OR ไม่ทำงานในราคา $ 1 เช่น: if [[ "$1" != '1' || '2' ]] then echo "BAD" else echo "OK" fi เมื่อฉันทำการทดสอบนี้ไม่ว่าจะเป็น $ 1 อะไร BAD ก็จะปรากฏขึ้นเสมอ ฉันจะผูก $ 1 เป็น 1 หรือ 2 เท่านั้นได้อย่างไร
linux  bash 

1
ฉันกำลังใช้ Bash อยู่หรือเปล่า
ฉันใช้ OS X 10.8.5 ฉันพยายามคิดว่าเทอร์มินัลกำลังทุบตี เมื่อฉันพิมพ์ต่อไปนี้มันระบุว่าคำสั่ง "getent" ไม่พบ - แต่ดูเหมือนว่าข้อความผิดพลาดมาจากทุบตี Me$ getent passwd $(whoami) | awk -F: '{print $NF}' -bash: getent: command not found ฉันกำลังทุบตีหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.