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

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

4
ปิดใช้งานการควบคุมงานใน bash (CTRL-Z)
มันเกิดขึ้นกับฉันในบางครั้งฉันกดCTRL+ Zโดยไม่ตั้งใจและใบสมัครของฉันหายไปเป็นพื้นหลัง ฉันรู้ว่าฉันสามารถนำมันกลับมาได้fgดังนั้นจึงไม่ใช่เรื่องใหญ่อะไร แต่ฉันสงสัยเกี่ยวกับการjob controlปิดเครื่องนี้อยู่ดี ในชีวิตทั้งชีวิตของฉันฉันไม่สามารถจำหนึ่งครั้งเมื่อฉันต้องการมันก็แค่ดูเหมือนว่าฉันเป็นรูปแบบที่ระลึกในอดีต ตกลงเพื่อปิดใช้งานjob controlทั้งหมดหรือไม่ หรือฉันกำลังพลาดบางสิ่งบางอย่างและคุณสมบัตินี้มีประโยชน์หรือไม่ ฉันจะปิดการใช้งานในฉันได้อย่างไร.bashrc UPDATE: ฉันได้ลองset +mตามที่ @Falsenames แนะนำแล้ว อย่างไรก็ตามสิ่งนี้ใช้ได้เฉพาะเมื่อฉันพิมพ์ในเทอร์มินัล การเพิ่มset +mเข้าไปในของฉัน.bashrcไม่มีผล

4
การบันทึกโลคัลของคำสั่ง ssh ทั้งหมดแบบโลคัล?
ฉันจะเก็บบันทึกโลคัลที่บันทึกเวลาของคำสั่งรีโมตทั้งหมดที่ฉันใช้ในssh(ไคลเอ็นต์ openssh บรรทัดคำสั่งเริ่มต้นผ่านbash) ได้อย่างไร? ที่ต้องการ: ที่สำคัญ: ฝั่งไคลเอ็นต์ 100% โดยไม่ต้องอาศัยการบันทึกเซิร์ฟเวอร์ กำหนดค่าหรือติดตั้งต่อผู้ใช้พร้อมบันทึกที่จัดเก็บในโฮมไดเรกทอรีของผู้ใช้ การสนับสนุนสำหรับการแยกความแตกต่างระหว่างหลายเซสชันพร้อมกันกับผู้ใช้และโฮสต์ที่หลากหลาย ไม่รบกวน (ไม่จำเป็นต้องเปิดใช้งานในแต่ละครั้งและไม่รบกวนการใช้ ssh อย่างมีนัยสำคัญ) ลำดับความสำคัญสูง: เอาต์พุตไม่ถูกล็อกหรือกรองออกให้มากที่สุด รายการรหัสผ่านอย่างใดอย่างหนึ่งจะไม่ถูกบันทึกหรือไฟล์ถูกเข้ารหัส บ่งชี้ถึงคำสั่งจริงที่ใช้ (หลังจากแท็บ / ประวัติเสร็จสมบูรณ์, backspaces, CTRL+ C, ฯลฯ ... ถูกประมวลผลแล้ว) ยินดีที่ได้: ยังบันทึกคำสั่งในเซสชันที่ถูกล่ามโซ่ (คำสั่งที่ป้อนระหว่างระยะไกลsshหรือsu <user>เซสชัน) ควรเริ่มต้นเซสชันและสิ้นสุดเซสชัน ง่ายbash-based, การแก้ปัญหาที่ไม่ใช่รากจะดีที่สุด (บางทีอาจจะเป็นaliasหรือbashสคริปต์เสื้อคลุมสำหรับsshคำสั่ง?) ระดับความสามารถของฉัน: ฉันไม่ได้ใหม่กับการเขียนโปรแกรม แต่ยังคงเรียนรู้bashและ "วิธี Linux" ดังนั้นตัวอย่างโค้ดที่มีคำอธิบายสั้น ๆ จะได้รับการชื่นชมมากที่สุด กลยุทธ์ที่เป็นไปได้ keylogger - ปัญหา: บันทึกรหัสผ่านไม่บันทึกแท็บ / …

4
วิธีการเพิ่มรูปแบบการทุบตีเสร็จสิ้น (สำหรับ unzip)?
เมื่อฉันพิมพ์ unzip <tab> ฉันได้รับรายชื่อของไฟล์ทั้งหมดที่ลงท้ายด้วย.zipซึ่งเป็นพฤติกรรมมาตรฐานของการทำให้แท็บเสร็จสมบูรณ์สำหรับunzipคำสั่ง อย่างไรก็ตามฉันยังต้องการทุบตีเสร็จสิ้นสำหรับunzipรายการไฟล์ที่ลงท้าย.udpด้วยนอกเหนือจาก.zipไฟล์ ฉันจะทำพฤติกรรมนี้ในท้องถิ่นของฉันได้.bashrcอย่างไร

2
จะเก็บไพพ์ (|) ในตัวแปรได้อย่างไร?
แนวคิดจะใช้เป็น ... ไปป์ในคำสั่ง ตัวอย่างเช่นสมมติว่ามีเส้นทางยาว ๆ ที่ต้องพิมพ์ซ้ำอีกครั้งตามด้วยไพพ์และโปรแกรมที่สองเช่น "directory1/directory2/direcotry3/file.dat | less -I " ฉันต้องการให้ส่วนนั้นถูกเก็บไว้ในตัวแปรดังนั้นจึงสามารถใช้เช่นนี้: r="directory1/directory2/direcotry3 \| less -I -p " $ cat path1/path2/$r <searchterm> แต่ฉันได้รับ cat: invalid option -- I Try `cat --help' for more information. ... หมายถึงท่อไม่ทำงาน
12 bash  pipe  variable 

3
เป็นไปได้ที่จะใช้วงเล็บปีกกา (การเปลี่ยนรูป) และการขยายอาร์เรย์พร้อมกันไหม
{}ไวยากรณ์ส่วนขยายของ Bash อนุญาตให้สร้างวิธีเรียงสับเปลี่ยนได้ง่าย # echo {b,c,d}{a,e,i,o,u} ba be bi bo bu ca ce ci co cu da de di do du อย่างไรก็ตามมันไม่ชัดเจนสำหรับฉันถ้า / เป็นไปได้ที่จะใช้สิ่งนี้พร้อมกับอาร์เรย์ยกเว้นในการใช้งานที่น่าอึดอัดใจมาก$() echoและeval มีวิธีง่ายๆในการใช้อาร์เรย์ที่มีการขยายหยิก (เปลี่ยนรูป)? เพื่อประโยชน์เช่นลองจินตนาการถึงสิ่งที่ชอบ (ซึ่งไม่ได้ผลแน่นอน): CONS=( b c d ) VOWEL=( a e i o u ) echo {${CONS[@]}}{${VOWEL[@]}}

2
ใช้ inotifywait เพื่อย้ายไฟล์เมื่อโหลดในโฟลเดอร์ดรอปบ็อกซ์
ฉันกำลังพยายามหาวิธีย้ายไฟล์ไปยังโฟลเดอร์อื่นทันทีที่ปรากฏในดรอปบ็อกซ์ของฉันบน CentOS ฉันขัดจังหวะอินเทอร์เน็ตเพื่อหาเบาะแส แต่ฉันไม่สามารถไปไกลเกินกว่าความจริงที่ว่าฉันต้องใช้inotifyเพื่อเรียกใช้สคริปต์ซึ่งจะประมวลผลไฟล์ตามที่ปรากฏ ความรู้ BASH ของฉันมี จำกัด มากและฉันสงสัยว่าฉันสามารถเขียนสิ่งนี้ใน PHP กล่าวอีกนัยหนึ่งฉันจะย้ายไฟล์ไปยังโฟลเดอร์อื่นทันทีที่ใช้งานได้inotifyอย่างไร
12 bash  centos  inotify 

4
วิธีการใช้ zypper ในสคริปต์ทุบตีสำหรับคนที่มาจาก apt-get?
ฉันมีคำถามสองสามข้อเกี่ยวกับการย้ายจาก apt-get ถึง zypper ใน bash script สิ่งนี้เทียบเท่ากับอะไร? sudo apt-get install curl --assume-yes (ในกรณีที่ขดอาจเป็นแพคเกจใด ๆ ) ผมพบว่าแผ่น zypper โกง - openSUSE ดีมาก! แต่ฉันจะขอบคุณเสียงแห่งประสบการณ์ที่นี่ - วิธีที่เหมาะสมในการใช้ zypper ในสคริปต์คืออะไรที่ฉันต้องการเห็นด้วยโดยอัตโนมัติต่อการแจ้งทั้งหมดและไม่ข้ามสิ่งที่ต้องการการตอบสนอง ด้วยความไม่มีประสบการณ์ของฉันฉันจะถูกล่อลวงให้ใช้: sudo zypper --non-interactive --no-gpg-checks --quiet install --auto-agree-with-licenses curl แต่นั่นเทียบเท่าจริงๆ--assume-yesหรือ แล้วเทียบเท่ากับพวกนี้ล่ะ? sudo apt-get autoremove -y sudo apt-get autoclean -y สิ่งนี้ชี้ให้เห็นว่าไม่มีใคร ... มีการแทนที่ gdebi-core …

3
การแชร์หรือซิงโครไนซ์ประวัติระหว่าง Zsh และ Bash
ฉันมักจะพบว่าตัวเองสลับระหว่าง Bash และ Zsh และใช้ฟังก์ชันการค้นหาประวัติเพื่อกู้คืนคำสั่ง อย่างไรก็ตามเนื่องจาก Bash และ Zsh มีไฟล์ประวัติที่แตกต่างกันฉันมักจะพบว่าคำสั่งที่ฉันค้นหาถูกเรียกใช้งานในเชลล์อื่น มีวิธีการแบ่งปันหรือซิงโครไนซ์ประวัติระหว่างทั้งสองหรือไม่

2
แบ่งปันคลิปบอร์ดระหว่าง bash และ X11
ในกระทู้นี้คำตอบยอดนิยมแสดงวิธีคัดลอกข้อความที่เลือกไว้ก่อนหน้านี้ด้วยเมาส์บน gnome-terminal ไปยังคลิปบอร์ดใน X11 คำถามของฉันคือว่าฉันคัดลอกข้อความจากเครื่องเทอร์มินัลโดยใช้เครื่องหมายทุบตีและแป้นพิมพ์ลัด (เช่นset-mark+ M-w) เป็นไปได้ไหมที่จะแบ่งปันคลิปบอร์ดนี้กับ X11? แก้ไข : ในคำถามเดิมฉันได้พูดคุยเกี่ยวกับการแบ่งปันคลิปบอร์ดกับ GNOME แต่ตามที่ Gilles ชี้ไว้ด้านล่าง GNOME ไม่มีคลิปบอร์ด (โดยเฉพาะ X) ดังนั้นฉันจึงได้อัปเดตคำถาม
12 bash  x11  clipboard 

2
ทำความเข้าใจกับคำสั่ง shell builtin
ในคู่มือทุบตีมันเขียนไว้ว่า Builtin commands are contained >>> within <<< the shell itself นอกจากนี้คำตอบนี้ระบุว่า A built-in command is simply a command that the shell carries out itself, instead of interpreting it as a request to load and run some >>> other program <<< เมื่อผมทำงานcompgen -bเกี่ยวกับbash 4.4ผมได้รับรายชื่อของเปลือกทั้งหมดในตัวคำสั่ง ฉันเห็นตัวอย่างนั้น[และkillถูกระบุว่าเป็นเชลล์บิวด์อิน แต่สถานที่จริงของพวกเขาคือ: /usr/bin/[ /bin/kill ฉันคิดว่าเป็นbuiltinวิธีที่คำสั่งจะถูกรวบรวมเป็น/bin/bashปฏิบัติการ ดังนั้นสิ่งที่ทำให้ฉันสับสนจริงๆ: …

3
Bash = ~ regex และ https://regex101.com/
ใช้https://regex101.com/ฉันสร้างนิพจน์ทั่วไปเพื่อส่งคืนที่อยู่ IP แรกในสตริง นิพจน์ทั่วไป: (?:\d{1,3}\.)+(?:\d{1,3}) RegExp รวมถึงตัวคั่น: /(?:\d{1,3}\.)+(?:\d{1,3})/ ด้วยสตริงทดสอบต่อไปนี้: eu-west 140.243.64.99 ส่งคืนการจับคู่แบบเต็มของ: 140.243.64.99 ไม่ว่าฉันจะลองกับสมอหรือไม่ก็ตามสคริปต์ทุบตีต่อไปนี้จะไม่ทำงานกับนิพจน์ทั่วไปที่สร้างขึ้น temp="eu-west 140.243.64.99 " regexp="(?:\d{1,3}\.)+(?:\d{1,3})" if [[ $temp =~ $regexp ]]; then echo "found a match" else echo "No IP address returned" fi

2
ในโหมด bash vi แผนที่ jk เพื่อออกจากโหมดแทรก
ฉันใช้อูบุนตู 16.04 ติดตั้งใหม่กับเปลือกทุบตี มีสองสิ่งที่ฉันต้องการทำ: ตั้งค่าโหมด vi เพื่อให้ฉันสามารถมีการเคลื่อนไหวเหมือนเป็นกลุ่มจากเทอร์มินัล ออกจากโหมดแทรกโดยการพิมพ์ jk ฉันอ่านในโพสต์อื่นว่าสิ่งนี้สามารถทำได้ด้วยzshฉันจะทำอย่างไรกับbash? TL; DR ใส่bind '"jk":vi-movement-mode'ลงใน.bashrcไฟล์ของคุณหลังจากset -o vi:) server@thinkpad:~$ tail -n 2 .bashrc set -o vi bind '"jk":vi-movement-mode' โปรดดูคำตอบของ @ grochmal สำหรับคำอธิบายโดยละเอียดเพิ่มเติม

2
พารามิเตอร์ทางเลือกในฟังก์ชั่นทุบตี
ฉันมีฟังก์ชั่นสำหรับการสร้างสาขา SVN ใหม่ที่รวดเร็ว function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; } ซึ่งฉันใช้เพื่อสร้างสาขาใหม่อย่างรวดเร็วโดยไม่ต้องค้นหาและคัดลอกวางที่อยู่และสิ่งอื่น ๆ อย่างไรก็ตามสำหรับข้อความ (ตัวเลือก -m) ฉันต้องการที่จะให้มันถ้าฉันให้พารามิเตอร์ที่สามจากนั้นที่จะใช้เป็นข้อความมิฉะนั้นข้อความ 'เริ่มต้น' ของ "dev สาขาราคา $ 2" บางคนสามารถอธิบายวิธีการนี้ได้หรือไม่

3
แสดงไฟล์ด้วยสี ANSI
ฉันมีไฟล์ที่มีสี ANSI test.txt: \e[0;31mExample\e[0m ฉันต้องการแสดงเนื้อหาของไฟล์นี้ในเทอร์มินัลเหมือนcatกัน แต่ต้องการแสดงสีด้วย
12 bash  terminal 

2
สะท้อนสตริงที่มีตัวแปรอยู่ในนั้นโดยไม่ต้องขยาย / ประเมินค่ามัน [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันค้นหาทุกที่ สะท้อนเสียงและพิมพ์ พยายามเสนอราคาเดียวและสองครั้ง แต่ฉันมีการแยกวิเคราะห์ข้อมูลและกำหนดให้กับตัวแปรและต้องการประเมินถ้ามีตัวแปรอยู่ภายใน ฉันจะแทนที่ตัวแปรด้วยอักขระตัวแทนและค้นหาไฟล์ ตัวอย่าง: var="file.$DATE.txt" ### Where it goes wrong- Needs to identify that $DATE is within the $var varaible. test=$(echo "$var"|grep '\$') if [[ $test ]] then ### I would use whatever fix is discovered here as well test=$(echo $test|sed …
12 bash  shell  quoting 

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