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

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

4
นี่คือการพิมพ์ผิดในส่วนการเปลี่ยนเส้นทางของคู่มือทุบตีหรือไม่?
Note that the order of redirections is significant. For example, the command ls > dirlist 2>&1 directs both standard output and standard error to the file dirlist, while the command ls 2>&1 > dirlist directs only the standard output to file dirlist, because the standard error was duplicated from the …

2
การลบไฟล์ออกจากรายการแบบโต้ตอบ
ฉันต้องการลบรายการไฟล์และขอให้ยืนยัน รายการอยู่ในlist.txtไฟล์ ทำไมคำสั่งต่อไปนี้ทำงานไม่ถูกต้อง while read i; do rm -i $i; done < list.txt คำสั่งก่อนหน้าไม่รอฉัน แต่โชคดีที่ไม่มีไฟล์ถูกลบ ฉันกำลังใช้ Bash

5
วิธีแยกคำสั่งเชลล์ทั้งหมดที่ใช้การเปลี่ยนเส้นทางโดยสิ้นเชิง
ผมเคยเขียนค่อนข้างเชลล์สคริปต์ไม่กี่ปีที่ผ่านมา ( แต่ฉันไม่แน่นอนดูแลระบบ) และมีบางสิ่งบางอย่างที่ทำให้เกิดปัญหาเสมอฉัน: ฉันจะแยกเปลือกคำสั่งภูมิคุ้มกัน hangups ในพื้นหลังจากที่ทุบตีสคริปต์? เช่นถ้าฉันมีสิ่งนี้: command_which_takes_time input > output ฉันจะ "nohup" และแยกสิ่งนี้ได้อย่างไร ต่อไปนี้ดูเหมือนจะไม่ทำสิ่งที่ฉันต้องการ: nohup command_which_takes_time input > output & ฉันกำลังค้นหาไวยากรณ์อะไรและฉันไม่เข้าใจอะไร
13 bash  scripting  nohup  fork 

8
ฉันจะกำหนดค่า mutt เพื่อแสดงส่วนหัววันที่ในเขตเวลาท้องถิ่นของฉันในเพจเจอร์ได้อย่างไร
เมื่อฉันดูข้อความในเพจเจอร์ mutt แสดงเวลาในส่วนหัว Date ใน UTC แทนที่จะเป็นเขตเวลาท้องถิ่นของฉัน มุมมองดัชนีแสดงเวลาท้องถิ่นอย่างถูกต้อง ฉันพบโพสต์รายชื่อผู้รับจดหมายเก่าที่อธิบายวิธีรับเวลาท้องถิ่นเพื่อแสดงในแถบสถานะที่ด้านล่างของหน้าจอ แต่นี่ยังไม่ "แก้ไข" เวลาในส่วนหัว Date ที่ด้านบนของหน้าจอ มีวิธีใดที่จะทำให้เพจเจอร์แปลงเวลาส่วนหัว Date เป็นเวลาท้องถิ่นหรือไม่?

3
ค้นหาคำสั่งในประวัติศาสตร์ด้วยคำหลักที่ไม่ต่อเนื่อง
ฉันสงสัยว่าจะค้นหาคำสั่งในประวัติศาสตร์โดยไม่ทราบตัวอักษรสองสามตัวแรกของคำสั่งได้อย่างไร เมื่อค้นหาโดยใช้Ctrl- Rใน bash เราจะต้องให้ตัวอักษรสองสามตัวแรกของคำสั่ง ถ้าฉันรู้จักตัวละครบางตัวที่อยู่ตรงกลางหรือบางตัวที่จุดเริ่มต้นและบางตัวที่อยู่ตรงกลาง ตัวอย่างเช่นในการค้นหาcat myfileฉันรู้เพียงว่ามีอยู่atในนั้นหรือcที่จุดเริ่มต้นและmyตรงกลางที่ใดที่หนึ่ง คำหลักจะต้องอยู่ในตำแหน่งอย่างต่อเนื่อง ยกตัวอย่างเช่นในcat myfileผมอยากที่จะค้นหาทั้งcและmyแต่Ctrl+Rจะไม่อนุญาตให้มีการระบุทั้งสองพร้อมกัน

3
คุณจะทราบได้อย่างไรว่าตัวแปรเชลล์ส่งออกหรือไม่
ด้วยตระกูลเชลล์ Bourne ตัวแปรเชลล์ทั้งหมดมีชื่อตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ซึ่งหมายความว่าคุณไม่สามารถบอกได้ว่าตัวแปรเฉพาะเป็นตัวแปรสภาพแวดล้อมหรือไม่เพียงแค่ดูที่ชื่อ คุณจะทราบได้อย่างไรว่าตัวแปรเชลล์ของ Bourne นั้นเป็นแบบโลคัล (กำหนดภายในเชลล์ปัจจุบันเท่านั้น)
13 bash  shell 

7
เหตุใดฉันจึงได้รับ“ บรรทัด 1: $ ': \ r': ไม่พบคำสั่ง "
ฉันใช้ Cygwin บนแล็ปท็อปของฉัน (DOS) ฉันมีชุดของสคริปต์จากเพื่อนร่วมงานของฉันและของฉันเอง ฉันไม่ใช่คนไอทีไม่เก่งเรื่องยูนิกซ์ ฉันทำตามไวยากรณ์ของเพื่อนร่วมงานและสามารถจัดการสิ่งต่าง ๆ ได้ง่ายๆ สคริปต์ทำงานได้ดีบนแล็ปท็อปเครื่องเก่าของฉัน ฉันเพิ่งเปลี่ยนแล็ปท็อปติดตั้ง Cygwin เมื่อฉันเรียกใช้สคริปต์สคริปต์จะไม่ทำงาน นี่เป็นตัวอย่างข้อผิดพลาดที่ฉันได้รับ: line 1: $':\r': command not found line 5: syntax error near unexpected token `$'\r'' line 5: `fi นี่คือสคริปต์ 5 บรรทัดแรกของฉัน : iter=1 if [ -f iter.txt ] then rm ./iter.txt fi ใครช่วยกรุณาอธิบายว่าฉันจะแก้ไขปัญหานี้ได้อย่างไร?

7
ค้นหารายการไดเรกทอรีหนึ่งระดับลึกจากไดเรกทอรีที่ตรงกัน
ฉันพยายามรับรายการไดเรกทอรีที่อยู่ในโฟลเดอร์เฉพาะ รับโฟลเดอร์ตัวอย่างเหล่านี้: foo/bar/test foo/bar/test/css foo/bar/wp-content/plugins/XYZ foo/bar/wp-content/plugins/XYZ/js foo/bar/wp-content/plugins/XYZ/css baz/wp-content/plugins/ABC baz/wp-content/plugins/ABC/inc baz/wp-content/plugins/ABC/inc/lib baz/wp-content/plugins/DEF bat/bar/foo/blog/wp-content/plugins/GHI ฉันต้องการคำสั่งที่จะกลับมา: XYZ ABC DEF GHI โดยพื้นฐานแล้วฉันกำลังมองหาโฟลเดอร์ที่อยู่ใน wp-content / plugins / การใช้findทำให้ฉันใกล้เคียงที่สุด แต่ฉันไม่สามารถใช้-maxdepthเพราะโฟลเดอร์แตกต่างจากที่ฉันค้นหา การรันสิ่งต่อไปนี้จะคืนค่าไดเรกทอรีลูกทั้งหมดซ้ำ find -type d -path *wp-content/plugins/* foo/bar/wp-content/plugins/XYZ foo/bar/wp-content/plugins/XYZ/js foo/bar/wp-content/plugins/XYZ/css baz/wp-content/plugins/ABC baz/wp-content/plugins/ABC/inc baz/wp-content/plugins/ABC/inc/lib baz/wp-content/plugins/DEF bat/bar/foo/blog/wp-content/plugins/GHI
13 bash  find  directory  ls 

2
เป็นไปได้ไหมที่จะกำหนดค่า bash ให้เติมข้อความอัตโนมัติด้วยหนึ่งแท็บอย่าง zsh?
ตามที่คนส่วนใหญ่รู้เมื่อใช้ bash ที่พรอมต์คำสั่งหากคุณพิมพ์ชื่อไฟล์คำสั่งหรือตัวเลือกให้กับคำสั่ง ฯลฯ บางส่วน bash จะทำคำให้สมบูรณ์หากมีหนึ่งตรงกันทั้งหมด เมื่อมีมากกว่าหนึ่งการแข่งขันคุณต้องกด<Tab>สองครั้งและทุบตีจะสร้างรายการการแข่งขันที่เป็นไปได้ ฉันต้องการที่จะกำหนดค่าทุบตีเพียงแค่ให้ตัวเลือกเหล่านั้นในครั้งแรก เป็นไปได้โดยไม่ต้องเขียนสคริปต์หรือไม่ เช่นตัวเลือกเปลือก?<Tab> man bash มีส่วน "การทำโปรแกรมให้เสร็จสมบูรณ์" แต่ฉันทำไม่ได้ถ้ามีตัวเลือกในการเปิดใช้งาน

5
เพิ่มผู้ใช้หลายคนในกลุ่ม UNIX ในหนึ่งบรรทัด
บนCentos 6.5 (และอาจจะมี) linux ฉันสามารถสร้างกลุ่ม: sudo groupadd mygroup และเพิ่มผู้ใช้หลายคน: sudo usermod -a -G mygroup userA sudo usermod -a -G mygroup userB sudo usermod -a -G mygroup userC 20จำนวนผู้ใช้ในกรณีพิเศษของฉันคือ ฉันจะใช้สายการบินเดียวได้อย่างไร: sudo usermod -a -G mygroup userA userB userC แม้แต่การใช้ลูปก็ไม่เป็นไร แต่ฉันไม่ใช่ผู้เชี่ยวชาญการทุบตีดังนั้นจึงสงสัย
13 bash  group 

2
Bash Scripting สะท้อนอยู่ภายในฟังก์ชัน
ในสคริปต์ทุบตีฉันพยายามทำให้ตัวแปรของฉันอยู่ในตัวเครื่องให้สามารถทำงานได้ทุกที่และจากนั้นส่งผ่านสิ่งที่ฉันต้องการจากการทำงานเช่นการร้อง #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" แต่มันเป็นไปได้ที่จะทำเช่นนี้ในขณะที่รวมถึง echos ของฟังก์ชั่นเพื่อที่ว่าถ้าฟังก์ชั่นนั้นมีข้อความของตัวเองเพื่อส่งออกฉันไม่ต้องจับมันในตัวแปร #!/bin/bash function FUNCTION() { local LOCAL="value" echo "$LOCAL" # return this variable echo "This function is done now" # do not return this variable } GLOBAL=$(FUNCTION) echo "$GLOBAL" # should …

2
ฉันจะยกเลิก fc โดยไม่ต้องดำเนินการคำสั่งได้อย่างไร
คำสั่ง fc จะอนุญาตให้แก้ไขด้วยสายตาของคำสั่งก่อนหน้า หากฉันเปลี่ยนใจในเครื่องมือแก้ไขฉันจะหยุดคำสั่งไม่ให้ทำงานได้อย่างไร ในกลุ่มให้พิมพ์ q! หรือ q ทั้งสองผลลัพธ์ในคำสั่งที่กำลังดำเนินการและ CTRL-C ไม่ทำงานอย่างใดอย่างหนึ่ง เป็นตัวเลือกเดียวที่จะลบคำสั่งในตัวแก้ไขแล้ว wq?

5
จะ 'วาง' / ลบตัวอักษรจากด้านหน้าของสตริงได้อย่างไร?
ฉันมีสตริงที่ฉันต้องการจัดการ สตริงเป็นH08W2345678วิธีที่ฉันจะสามารถจัดการกับมันดังนั้นการส่งออกเป็นเพียงแค่W2345678? ในทำนองเดียวกันถ้าฉันต้องการที่จะลดตัวละคร 4 ตัวสุดท้ายจากH08W2345678นั้นฉันH08W234จะทำยังไงดี?

5
ฉันจะ sudo su และเปลี่ยนไดเรกทอรีได้อย่างไร
ฉันต้องการสร้างนามแฝงที่ทำสิ่งนี้: alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access' ดังนั้นแล้วจากบรรทัดคำสั่งของฉันฉันเข้าสู่ระบบด้วยผู้ใช้ sudo และผมอยากจะพิมพ์นามแฝงuserYYYเพื่อให้เปลือกของฉันถูกบันทึกไว้ตอนนี้มีuserYYYและเป็นpwd/a/path/that/only/userYYY/has/access ฉันจะทำสิ่งนั้นได้อย่างไร นี่userYYYคือการเรียกใช้กระบวนการบางอย่างและจะต้องมีอะไรในบ้านของมัน ดังนั้นฉันพยายามเปลี่ยน $ HOME โดยใช้: sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY และจากเปลือกของฉันกับแฟ้ม sudoer sudo su userYYYของฉันฉันทำ แต่นั่นไม่ได้ผล สิ่งเดียวที่ใช้ได้คือsudo su -l userYYYYแต่เปิด bash ใหม่ภายในเชลล์เดิมของฉัน ( -bash-4.1$ ....) โดยสรุปสิ่งที่ฉันต้องการคือหลีกเลี่ยงการเขียน 2 บรรทัดในเชลล์: sudo su userYYY cd /a/path/that/only/userYYY/has/access ความคิดใด ๆ
13 bash  shell  sudo  su 

4
ค้นหา: ลูกพรุนไม่สนใจเส้นทางที่ระบุ
ฉันต้องแยก.gitออกจากการfindค้นหาของฉัน เพื่อให้บรรลุผลนั้นฉันใช้-path ./.git -pruneสวิตช์: $ find . -path ./.git -prune -o \( -type f -o -type l -o -type d \) | grep '.git' ./.git อย่างไรก็ตามแม้ว่าสิ่งนี้จะข้ามเนื้อหาของไดเรกทอรี. git แต่จะแสดงรายการไดเรกทอรีเอง มันทำงานได้เมื่อฉันเพิ่ม-path ./.git -prune -o -print -a find . -path ./.git -prune -o -print -a \( -type f -o -type l -o -type …
13 bash  find 

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