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

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

4
วิธี จำกัด จำนวนบรรทัดที่เอาต์พุตของคำสั่งมีอยู่ใน bash?
ฉันเริ่มดาวน์โหลดไฟล์ขนาดใหญ่ในพื้นหลังโดยใช้ $ nohup wget http://example.tld/big.iso & ซึ่งยังทำให้ฉันไฟล์ที่มีการส่งออกของnohup.outwget ตอนนี้ถ้าฉันต้องการดูขั้นตอนการดาวน์โหลดในภายหลังฉันสามารถใช้$ tail -f nohup.outแต่นั่นจะทำให้หน้าต่างเทอร์มินัลของฉันเร็วขึ้นกว่าที่ฉันต้องการ สิ่งที่ฉันต้องการเห็นคือบรรทัดสุดท้ายที่อัปเดตตลอดเวลา (เช่นเมื่อใช้wgetคนเดียว) ฉันพยายาม$ tail -n 1 -f nohup.outแต่ดูเหมือนว่าจะส่งผลกระทบเฉพาะ tailin เริ่มต้น ' โดยทั่วไปแล้วหากเป็นไปได้ที่จะ จำกัด (ในกรณีนี้คือ 1) จำนวนบรรทัดของเอาต์พุตของคำสั่งที่มีอยู่ / มองเห็นได้จะช่วยแก้ปัญหานี้ได้ เรียงลำดับของการมีผลลัพธ์ในบัฟเฟอร์แบบวงกลม - แค่คิดว่าแถบความคืบหน้าปกติ$ wget example.tld/big.isoจะพิมพ์ มีวิธีแก้ปัญหาเหรอ? หรือฉันกำลังปีนต้นไม้ผิดทาง? (หมายความว่ามันจะง่ายกว่าไหมในการ จำกัดnohupเอาต์พุตหรือทำอย่างอื่น?)
11 bash  tail  nohup  stdout 

2
ไปป์สำหรับเอาท์พุตป้องกันการแก้ไขตัวแปรท้องถิ่น
ฉันพยายามเขียนฟังก์ชั่นทุบตีง่ายๆที่ใช้เป็นอาร์กิวเมนต์จำนวนไฟล์และ / หรือไดเรกทอรี มันควรจะ: มีคุณสมบัติชื่อไฟล์อย่างเต็มที่ เรียงพวกเขา ลบรายการซ้ำ พิมพ์ทั้งหมดที่มีอยู่จริง ส่งคืนจำนวนไฟล์ที่ไม่มีอยู่ ฉันมีสคริปต์ที่เกือบจะทำในสิ่งที่ฉันต้องการ แต่ก็ล้มเหลวในการเรียงลำดับ ค่าส่งคืนของสคริปต์ตามที่ถูกต้อง แต่ผลลัพธ์ไม่ได้ (ไม่ได้เรียงลำดับและทำซ้ำ) ถ้าฉันบรรทัดเหล่า| sort -uคำสั่งตามที่ระบุเอาท์พุทที่ถูกต้อง 0แต่ค่าตอบแทนอยู่เสมอ ยินดีต้อนรับโซลูชัน NB ที่เรียบง่ายในการแก้ปัญหา แต่เป็นคำถามเกี่ยวกับสาเหตุที่เกิดขึ้นในรหัสที่ฉันมี นั่นคือเหตุใดการเพิ่มไพพ์จึงดูเหมือนว่าจะหยุดสคริปต์ที่เพิ่มค่าตัวแปรr? นี่คือสคริปต์: function uniqfile { local r=0 for arg in "$@" do readlink -e "$arg" || (( ++r )) done #| sort -u ## remove that comment return …

6
วิธีปิดการใช้งาน emacs ที่นี่การเติมเอกสารให้สมบูรณ์
เมื่อแก้ไขไฟล์ bash script ด้วย emacs และพยายามเข้า<<<มาที่<emacs ตัวที่สองแทรกเทมเพลตสำหรับเอกสาร here ที่นี่เช่นในตัวอย่างต่อไปนี้: <<EOF EOF <<<นี้ไม่ได้ผลลัพธ์ที่ต้องการเพราะผมจะป้อนตัวอักษร สำหรับช่วงเวลาที่ฉันหันไปทาง< < <แล้วลบช่องว่าง แต่ฉันชอบที่จะได้รับอนุญาตให้ป้อนโดยตรง

4
ฉันจะค้นหาการทับซ้อนของสองสายในทุบตีได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมีสองสาย เพื่อเป็นตัวอย่างพวกเขาตั้งไว้เช่นนี้: string1="test toast" string2="test test" สิ่งที่ฉันต้องการคือการค้นหาการทับซ้อนเริ่มต้นที่จุดเริ่มต้นของสตริง ด้วยการทับซ้อนฉันหมายถึงสตริง "test t" ในตัวอย่างข้างต้นของฉัน # I look for the command command "$string1" "$string2" # that outputs: "test t" หากสตริงเป็นstring1="atest toast"; string2="test test"พวกเขาจะต้องไม่ทับซ้อนกันตั้งแต่เริ่มต้นการตรวจสอบรูปแบบจุดเริ่มต้นและ "a" string1จุดเริ่มต้นของ

2
ทำให้แท็บเสร็จสมบูรณ์แล้วเติมในแมตช์แรก?
มีวิธีใดบ้างที่จะทำให้ BASH เติมในการแข่งขันครั้งแรกเมื่อฉันกด TAB ชนิดของพรอมต์คำสั่งของ Windows (มันควรจะยังคงแสดงรายการของการแข่งขัน แต่มันควรจะวนรอบพวกเขาเมื่อฉันกดที่แท็บ) นั่นคือเป้าหมายที่นี่เพื่อให้สามารถเติมเต็มการแข่งขันใด ๆ ที่มีเพียงปุ่ม TAB ให้กดพอเช่นใน Windows

2
วิธีใช้ - เป็นนามแฝง
เมื่อฉันใช้ openSUSE 11.3 มันมาพร้อมกับชื่อแทนหลายรายการที่ตั้งค่าไว้แล้ว สองที่ผมใช้มากเป็น+สำหรับpushd .และสำหรับ- popdตอนนี้ที่ Debian ฉันไม่สามารถหาวิธีสร้างอันที่สองได้ alias -=popdพยายามที่จะอ่าน-=เป็นตัวเลือกคำสั่งเพื่อนามแฝง ฉันได้ลองใส่เครื่องหมายคำพูด (ทั้งเดี่ยวและคู่) รอบ ๆ มันและนำหน้าด้วยเครื่องหมายทับขวา แต่ฉันเพิ่งได้รับข้อความแสดงข้อผิดพลาด ข้อเสนอแนะใด ๆ ขอบคุณ
11 bash  alias 

4
บังคับให้นามแฝงที่ 'เพิ่ม' ให้กับทุกคำสั่ง
เป็นไปได้ไหมที่จะบังคับให้เพิ่มชื่อแทนเวลา (เนื่องจากไม่มีวิธีที่ดีกว่าในการเขียนวลี) ให้กับทุกคำสั่งbash? ตัวอย่างเช่นผมต้องการที่จะมีผู้ใช้เฉพาะที่เมื่อใดก็ตามที่คำสั่งจะดำเนินการก็จะห่อเสมอทั้งที่มีก่อนและหลังหรือdatetime เป็นไปได้และถ้าเป็นเช่นนั้นได้อย่างไร
11 bash  monitoring  alias  date  time 

2
เหตุใดการลบไฟล์ด้วยชื่อจึงช้าลงอย่างมากและเร็วเป็นพิเศษ
Faux pas: วิธี "เร็ว" ที่ฉันพูดถึงข้างล่างนี้ไม่ได้เร็วกว่าวิธีช้า 60 เท่า เร็วกว่า 30 เท่า ฉันจะโทษความผิดพลาดในชั่วโมงนั้น (3AM ไม่ใช่เวลาที่ดีที่สุดของฉันสำหรับการคิดที่ชัดเจน :) .. อัปเดต: ฉันได้เพิ่มบทสรุปของเวลาทดสอบ (ด้านล่าง) ดูเหมือนจะมีสองประเด็นที่เกี่ยวข้องกับปัจจัยด้านความเร็ว: ตัวเลือกของคำสั่งที่ใช้ (การเปรียบเทียบเวลาที่แสดงด้านล่าง) ลักษณะของไฟล์จำนวนมากในไดเรกทอรี ... ดูเหมือนว่า "ใหญ่ไม่ดี" ทุกอย่างช้าลงอย่างไม่เป็นสัดส่วนเมื่อจำนวนเพิ่มขึ้น .. การทดสอบทั้งหมดเสร็จสิ้นด้วย 1 ล้านไฟล์ (เวลาจริงผู้ใช้และ sys อยู่ในสคริปต์ทดสอบ) สคริปต์ทดสอบสามารถพบได้ที่paste.ubuntu.com # # 1 million files # =============== # # |time |new dir |Files added in ASCENDING …
11 bash  filesystems  ext4 

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 

2
ไม่รวมไดเรกทอรีเมื่อซิปไฟล์
ฉันมีสคริปต์ทุบตีที่ทำสิ่งนี้: zip -0 ../backup/backup.zip \ -r ./* \ -x \*CVS\* \ -x *Thumbs.db* \ ไดเรกทอรีที่สำรองนั้นเป็นไฟล์เก็บถาวร SVN (เคยเป็น CVS ย้อนกลับไปในวันนั้น) ฉันไม่สามารถแยกออกเป็น. svn และเนื้อหาได้ อะไรคือวิธีที่สะอาดที่สุดในการยกเว้น. svn (วนซ้ำทั้งต้น)
11 bash  scripting  zip 

2
การเพิ่มบรรทัดว่างที่ส่วนท้ายของอินพุต
ฉันมีคำสั่งบางอย่างที่สร้างเอาต์พุตโดยไม่มีบรรทัดใหม่ในตอนท้ายเช่นนี้ Myprompt$ somecmd dksfjdl dsfjdlkfj dsfjdkfj dfjdkfjMyprompt$ ตอนนี้ฉันเอาชนะมันได้โดยวิธีนี้somecmd | sed 's/$/\n/' | tr -s '\n' มีวิธีที่ดีกว่าไหม?

4
ฉันสามารถค้นหาประวัติของฉันผ่านหน้าต่างหน้าจอหลาย ๆ
screenเซสชั่นปัจจุบันของฉันมี 12 หน้าต่างที่เปิดอยู่ มันกำลังทำงานเป็นเวลาหลายสัปดาห์ ... ฉันรู้ว่าฉันดำเนินการconvertคำสั่งImageMagick ในหนึ่งใน 12 หน้าต่างหน้าจอเหล่านี้บางครั้งเมื่อสัปดาห์ที่แล้ว ... มีวิธีใดที่ฉันสามารถค้นหาประวัติ Bash ของทั้ง 12 อินสแตนซ์ได้โดยง่ายhistory | grep convertในทั้ง 12 หน้าจอ?

2
วิธีการอย่างถูกต้องหลบหนีเครื่องหมายอัศเจรีย์ในทุบตี?
วันนี้ฉันถูกจับ redhanded ในขณะที่พยายามรหัสกอล์ฟกำเนิดรหัสผ่านสำหรับ Twitter import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9)) 90 ตัวอักษร เนื่องจากเป็นพื้นที่ว่างจำนวนมากฉันจึงตัดสินใจยกระดับและทำให้มันใช้งานได้เช่นกัน echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 139 ตัวอักษร ดียกเว้นเห็นได้ชัดว่าทุบตีโช้คที่เครื่องหมายอัศเจรีย์ badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg bash: !/usr/bin/python\nimport: event not found เครื่องหมายอัศเจรีย์น่ารำคาญ "มาหนีกันเถอะ" ฉันคิดว่า! ฉันมีตัวละครตัวหนึ่งเหลือเกิน echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod …

8
เชลล์สคริปต์ GUI / CLI editor ที่คุณชื่นชอบคืออะไรและเพราะเหตุใด [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันใช้เสียงเรียกเข้าสำหรับการแก้ไขสคริปต์ทุบตีในขณะนี้ แต่ฉันจำเป็นต้องตั้งค่าและ / หรือติดตั้งปลั๊กอิน ยินดีต้อนรับคำแนะนำปลั๊กอิน ไม่ว่าจะด้วยวิธีใดฉันต้องการดูว่าผู้แก้ไข / IDE รายใดที่มีสำหรับงานนี้
11 bash  editors 

2
ทำไม pwd ไม่ยอมรับตัวเลือกที่ยาวเช่น - ฟิสิคัล?
เมื่อฉันแสดงคู่มือสำหรับpwdคำสั่งมันบอกว่าตัวเลือกแบบยาวที่--physicalได้รับการสนับสนุน $ man pwd PWD(1) User Commands PWD(1) NAME pwd - print name of current/working directory SYNOPSIS pwd [OPTION]... DESCRIPTION Print the full filename of the current working directory. -L, --logical use PWD from environment, even if it contains symlinks -P, --physical avoid all symlinks อย่างไรก็ตามมันล้มเหลวเมื่อฉันพิมพ์ต่อไปนี้ $ pwd --physical -bash: …
11 bash  rhel  pwd 

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