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

Bash (Bourne-Again SHell) เป็นเชลล์ที่ใช้ในอินเตอร์เฟสบรรทัดคำสั่งของ Ubuntu ตามค่าเริ่มต้น

2
ทำไมรูปแบบผลลัพธ์ของเวลาแตกต่างกันไปขึ้นอยู่กับวิธีที่ฉันเรียกมัน
อาจเป็นคำถามของมือใหม่ แต่ฉันไม่เข้าใจว่าการกำหนดค่านี้เป็นอย่างไรและสาเหตุที่รูปแบบเอาต์พุตของtimeคำสั่งแตกต่างกันในสองกรณีนี้: หากใช้ผ่านtimeเอาต์พุตจะมีสามแถวพร้อมข้อมูลพื้นฐาน $ time sleep 1 real 0m1.003s user 0m0.000s sys 0m0.000s จากนั้นฉันสามารถตรวจสอบว่ามีการใช้ไบนารีใด $ which time /usr/bin/time และเรียกมันโดยตรงเพื่อให้ได้ผลลัพธ์ในรูปแบบที่แตกต่างอย่างสิ้นเชิงพร้อมข้อมูลเพิ่มเติมอีกมากมาย $ /usr/bin/time sleep 1 0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2000maxresident)k 0inputs+0outputs (0major+77minor)pagefaults 0swaps ไม่มีนามแฝงที่เกี่ยวข้องกับ time $ alias | grep time $ Ubuntu 16.04ฉันทำงาน

6
ลบทั้งหมดยกเว้นไฟล์ที่ 12 ทุกไฟล์
ฉันมีไฟล์สองพันไฟล์ในรูปแบบชื่อไฟล์ 12345.end ฉันต้องการเก็บทุก ๆ ไฟล์ที่ 12 เท่านั้นดังนั้น file.00012.end, file.00024.end ... file.99996.end และลบทุกอย่างอื่น ไฟล์อาจมีตัวเลขก่อนหน้านี้ในชื่อไฟล์และโดยปกติแล้วจะอยู่ในรูปแบบ: file.00064.name.99999.end ฉันใช้ Bash shell และไม่สามารถหาวิธีวนลูปไฟล์จากนั้นรับตัวเลขและตรวจสอบว่ามันnumber%%12=0 ลบไฟล์หรือไม่ มีใครช่วยฉันบ้าง ขอบคุณ Dorina
14 bash  rm 

2
ทำไม Windows & Ubuntu จึงมีคำสั่งเชลล์เหมือนกัน?
Ubuntu มีทุบตี (Bourne Again SHell) ในขณะที่ Windows มีเชลล์เป็นกรรมสิทธิ์ จากการวิจัยของฉันไม่มีชื่อภาษาที่ใช้สำหรับเชลล์สคริปต์ใน Windows / Ubuntu มันเรียกว่าเชลล์สคริปต์ ทำไม Windows & อูบุนตูหอยเข้าใจคำสั่งเดียวกันเช่น: ls, mkdir, rmdir, mountและอื่น ๆ ? มีภาษากลางของภาษาสคริปต์เชลล์บ้างไหม? ถ้าเป็นเช่นนั้นโปรดให้รายละเอียดเพิ่มเติมแก่ฉัน

5
ใช้งานสคริปต์ที่สร้างใน Notepad (Windows) บน Ubuntu
ฉันสร้างไฟล์ Notepad บน Windows และคัดลอกไปยัง Ubuntu ไฟล์มีกฎ iptables หลังจากทำให้ไฟล์ที่เรียกทำงานได้โดยใช้chmod +xและดำเนินการแล้วจะไม่ทำงาน อย่างไรก็ตามเมื่อฉันสร้างไฟล์ Ubuntu ( gedit ) และคัดลอกเนื้อหาเดียวกันจากไฟล์ Notepad ทำให้มันสามารถเรียกใช้และรันได้มันทำงานได้ ฉันควรทำอย่างไรเพื่อให้ไฟล์ Notepad ทำงานบน Ubuntu

2
Rsync - ตัวเลือกการลบไม่ได้ลบไฟล์ในไดเรกทอรีเป้าหมาย
ฉันกำลังพยายามใช้--deleteตัวเลือกในrsyncการลบไฟล์ในไดเรกทอรีเป้าหมายซึ่งไม่มีอยู่ในไดเรกทอรีเดิม นี่คือคำสั่งที่ฉันใช้: rsync -avz --ignore-existing --recursive --delete /var/www/* root@mydomaintest.com:/var/www ดังนั้นคำถามของฉันคือฉันจะลบไฟล์ทั้งหมดในไดเรกทอรีเป้าหมายที่ไม่มีอยู่ในไดเรกทอรีเดิมได้อย่างไร
14 12.04  bash  rsync 

1
วิธีล้างการแจ้งเตือนถาดระบบผ่านบรรทัดคำสั่ง
ฉันมีแอปพลิเคชันที่สร้างระบบแจ้งเตือนทุก 5 วินาที การทำงานล่วงเวลาถาดแจ้งเตือนที่ฉันมี (Gnome env) จะเบียดเสียด ฉันจะล้างมันเหมือนทุกนาทีได้อย่างไร แต่ฉันต้องทำสิ่งนี้ผ่าน bash เพื่อที่ฉันจะได้ทำให้เป็นแบบอัตโนมัติในภายหลัง แก้ไข ฉันคิดว่าฉันยังไม่ได้ทำให้คำถามของฉันชัดเจนในการแก้ไขนี้ ฉันต้องการที่จะเห็นการแจ้งเตือน แต่เนื่องจากสิ่งนี้อยู่ใน GNOME env จึงได้รับการสะสมในถาดการแจ้งเตือนเว้นแต่จะล้างด้วยตนเอง ฉันไม่ต้องการล้างมันด้วยตนเอง ... ฉันต้องการล้างมันโดยอัตโนมัติทุก ๆ 1 นาที ดังนั้นฉันกำลังมองหาวิธีที่จะทำจากบรรทัดคำสั่งเพื่อที่ฉันจะได้ในภายหลังในรหัสที่เป็นใบสมัครของฉัน หวังว่าฉันได้ทำให้คำถามของฉันชัดเจน ...

5
มีฟังก์ชั่นเริ่มต้น / ยูทิลิตี้เพื่อแจ้งผู้ใช้ว่าใช่ / ไม่ใช่ในสคริปต์ Bash หรือไม่?
บางครั้งฉันต้องถามผู้ใช้ว่าใช่ / ไม่ใช่เพื่อยืนยันบางสิ่ง ฉันมักจะใช้สิ่งนี้: # Yes/no dialog. The first argument is the message that the user will see. # If the user enters n/N, send exit 1. check_yes_no(){ while true; do read -p "$1" yn if [ "$yn" = "" ]; then yn='Y' fi case "$yn" in [Yy] ) break;; …

5
การเรียงลำดับที่ไม่ซ้ำกัน: เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์เดียวกัน
มีวิธีสั้น ๆ ในการบันทึกเอาต์พุตไปป์เป็นไฟล์เดียวกับที่ประมวลผลหรือไม่ ตัวอย่างเช่นนี่คือสิ่งที่ฉันกำลังทำอยู่ $ cat filename | sort | uniq > result $ rm -f filename $ mv result filename ฉันสงสัยว่ามีวิธีที่จะทำได้ในหนึ่งบรรทัด (ไม่ต่อท้ายคำสั่งเหล่านั้นโดยใช้ &&) นี่ไม่ใช่วิธี แต่จะได้รับความคิด $ cat filename | sort | uniq > filename

2
การติดตั้งเบราว์เซอร์ที่ละเมิด
แก้ไข: เพียงแค่ดูคำตอบที่ยอมรับ ฉันไม่ได้ทำงานในขณะที่เขียนดังนั้นฉันเดาด้านล่าง ฉันใหม่กับ Linux ดังนั้นนี่อาจเป็นคำถาม noob ฉันกำลังพยายามติดตั้งเว็บเบราว์เซอร์ใหม่ที่เรียกว่าการละเมิดซึ่งสร้างขึ้นใน JavaScript โดยเฉพาะอย่างยิ่ง Node.js และฉันต้องการลองแฮ็คมันสักหน่อย ฉันติดตั้งโฟลเดอร์ tar จากนอกไซต์ของพวกเขาและฉันมีโฟลเดอร์ชื่อAUTO_UPDATE_BUNDLEและไฟล์ชื่อ breach.sh ฉันเชื่อว่าไฟล์ Breach เป็นสคริปต์ทุบตีและฉันเดาว่าฉันจะติดตั้งมันอย่างไร (ฉันไม่รู้ว่าถูกต้องแล้ว) ดังนั้นฉันจึงค้นหาวิธีใช้สคริปต์ทุบตีออนไลน์ ฉันไปที่เทอร์มินัลและนี่คือสิ่งที่ฉันเขียนในไดเรกทอรีของไฟล์ breach.sh sh breach ฉันได้รับข้อผิดพลาดนี้ [3428:3428:0710/191300:858123323:FATAL:browser_main_loop.cc(172)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on. Aborted (core dumped) จากนั้นฉันก็ไปที่ลิงค์ไปยังcode.google.com / ...ด้านบนและมันบอกว่า เราต้องการไบนารีตัวช่วย …

3
ประกาศอาร์เรย์ แต่ไม่ได้กำหนดหรือไม่
มีคำแนะนำ มากมายซึ่งแสดงวิธีการประกาศและกำหนดอาร์เรย์ foo[0]=abc foo[1]=def สิ่งที่ฉันพยายามที่จะบรรลุคือการประกาศอาร์เรย์ แต่ไม่ได้กำหนดเพราะไม่จำเป็นต้องกำหนดทันทีในภาษาการเขียนโปรแกรมส่วนใหญ่มันจะมีลักษณะเช่นนี้ int bar[100]; เป็นไปได้ในภาษาสคริปต์เปลือก?
14 bash 

3
ยกเว้นจาก * ในบรรทัดคำสั่ง
มีสถานการณ์มากมายที่การใช้ a *หลีกเลี่ยงไม่ได้เช่นrm -rf *ในโฟลเดอร์ที่เก็บโฟลเดอร์ย่อยและไฟล์หลายพันรายการ แต่ถ้าคุณต้องการแยกไฟล์หรือโฟลเดอร์เพียงหนึ่งหรือสองไฟล์ออกจากrmคำสั่ง ฉัน googled ทางของรอบและพบเพียงการแก้ปัญหาที่มีความซับซ้อนค่อนข้างชอบfind . -depth -not \( -name 'one' -o -name 'two' \ -o -name 'three' \) -exec rm {} \;ตามที่ระบุไว้ที่นี่ มีความเป็นไปได้findไหมที่จะทำสิ่งนี้ในวิธีที่ง่ายกว่า - โดยไม่ต้องอ้อมว่า? เช่นrm -rf --exclude='one' --exclude='two' --exclude='three' *ใน rsync หรือเพียงแค่rm -rf -e 'one','two','three' *? แม้อาจจะเป็นไปได้โดยทั่วไปจะไม่รวมสิ่งจาก*(คำสั่งอื่น ๆ จึงชอบcp, mv... ไม่ได้มีการดำเนินการของตัวเอง)? มีอะไรที่คล้าย*{'one','two','three'}กัน
14 command-line  bash  rm 


6
สคริปต์เพื่อปิดเสียงแอปพลิเคชัน
เป้าหมายของฉันคือสามารถปิดแอปพลิเคชั่น Spotify ไม่ใช่ระบบทั้งหมด การใช้คำสั่ง: ps -C spotify -o pid=ผมสามารถที่จะหากระบวนการ ID ของ Spotify ในกรณีนี้ ID "22981"คือ ด้วยกระบวนการ ID pacmd list-sink-inputsที่ฉันต้องการจะค้นหาจากรายการนี้: คำสั่งนั้นส่งคืนรายการเช่นนี้: eric@eric-desktop:~$ pacmd list-sink-inputs Welcome to PulseAudio! Use "help" for usage information. >>> 1 sink input(s) available. index: 0 driver: <protocol-native.c> flags: START_CORKED state: RUNNING sink: 1 <alsa_output.pci-0000_00_1b.0.analog-stereo> volume: 0: 100% …

1
วิธีการหลีกเลี่ยงสัญลักษณ์ `$ 'และ` #' ใน bash?
ฉันมีสตริงง่ายๆที่ฉันต้องการสะท้อนจากสคริปต์ทุบตีของฉัน: $(document).ready(function() {$('#cf-footer-paragraph').append('<p>Revision 12345</p>');}); แต่ฉันจะลองเพิ่ม\ก่อนที่ # ฉันไม่สามารถ echo มัน = (ดังนั้นฉันสงสัย - วิธี echo คำสั่งดังกล่าว?
14 bash 

3
วิธีส่งข้อความที่ป้อนในบรรทัดคำสั่งไปยังคลิปบอร์ดของระบบอย่างมีประสิทธิภาพโดยไม่ต้องใช้เมาส์ได้อย่างไร
สมมติว่าฉันพิมพ์คำสั่งแบบยาวต่อไปนี้ในบรรทัดคำสั่ง $ some very long command that I want to copy to the clipboard ฉันจะนำสิ่งนี้ไปไว้ในคลิปบอร์ดของระบบได้อย่างมีประสิทธิภาพได้อย่างไร ฉันใช้ Gnome Terminal 2.23.1 ฉันรู้ว่าฉันจะได้รับเมาส์และเน้นและคัดลอก แต่ฉันต้องการโซลูชันแป้นพิมพ์ทั่วไป มันก็จะดีถ้ามันเป็นบรรทัดฐานของโปรแกรมบรรทัดคำสั่งหลายโปรแกรม ตัวอย่างเช่นใน bash ในโหมด vi ฉันสามารถกดvแล้วแก้ไขคำสั่งในกลุ่มและใช้คุณลักษณะคัดลอกไปยังคลิปบอร์ดของ Vim แต่สิ่งนี้ไม่ทำงานเมื่อใช้ R บนบรรทัดคำสั่ง มันก็ช้าไปหน่อย ฉันต้องการมันถ้าในโหมด vi ฉันสามารถกดyyและคัดลอกเนื้อหาของบรรทัดไปยังคลิปบอร์ดของระบบ แต่ดูเหมือนจะไม่ทำงาน นอกจากนี้คำสั่ง yanking ใด ๆ ดูเหมือนจะไม่คัดลอกเนื้อหาไปยังคลิปบอร์ดของระบบ ดูเหมือนว่าจะคัดลอกไปยังบัฟเฟอร์ที่ใช้โดย bash เท่านั้น UPDATE: หลังจากโพสต์ฉันพบ คำถามที่คล้ายกันนี้กับ SO การสนทนาที่มีแนวโน้มนี้ของการแก้ไขเพื่อ readline

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