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

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

2
สิ้นสุดแต่ละคำสั่งในเทอร์มินัลโดยอัตโนมัติด้วยข้อความหรือเสียงที่แตกต่างกัน
ฉันติดตั้งSVOX pico2waveและสร้างสคริปต์ ตอนนี้เมื่อฉันเข้าร่วม: speech "Hello world" เอ็นจิ้นข้อความเป็นเสียงของคอมพิวเตอร์พูดเสียงดังออกมาว่า "Hello world" นอกจากนี้ฉันใช้ใน.bashrcตัวแปรที่PROMPT_COMMANDกำหนดเป็น: PROMPT_COMMAND="speech 'Command executed.'" เอ็นจิ้นข้อความเป็นเสียงที่ดีประกาศให้ฉันดังว่าคำสั่งถูกเรียกใช้งานก่อนที่จะส่งคืนพรอมต์ในเทอร์มินัล อย่างไรก็ตามเรื่องนี้น่าเบื่อไปครู่หนึ่งและฉันคิดว่ามันจะเจ๋งจริง ๆ ที่จะจบแต่ละคำสั่งในเทอร์มินัลด้วยคอมพิวเตอร์ที่พูดข้อความที่แตกต่างกัน (คิดว่าเป็นนักบินขององค์กร Starship) ดังนั้นฉันจึงสร้าง. bashrc เป็นอาเรย์ตัวแปรที่มีข้อความต่างกัน: array[0]="Shields at 90%" array[1]="Engaging proton overdrive" array[2]="Autopilot disengaged" array[3]="Targetting solution available" array[4]="Alert. Incoming missile." array[5]="Deploying countermeasures." array[6]="Firing torpedoes." array[7]="Engaging auto-cannon." array[8]="Severe damage on deck 17. Sealing off." array[9]="Deploying …

1
“ (arg: 1)” นี่คืออะไรปรากฏขึ้นใน terminal / tty หลังจากที่ฉันกดปุ่มรวมกัน?
ในเทอร์มินัลเสมือน I (ตั้งใจ) กดWin+ 1และรับบรรทัดใหม่ประกอบด้วย (arg: 1) ตราบใดที่ฉันให้Winกดตัวเลขทั้งหมดผมกดได้รับการผนวกเข้ากับตัวเลขในวงเล็บเช่นWinและ1+ อัตราผลตอบแทน4(arg:14) เมื่อฉัน (หลังจากปล่อยWin) กดปุ่มใด ๆ ตัวละครนั้นจะถูกพิมพ์หลายครั้งตามจำนวนที่อ่านและการ(arg: ...)แสดงออกจะถูกแทนที่ด้วยพรอมต์มาตรฐาน ไม่มีใครรู้ว่าเกิดอะไรขึ้นที่นี่

3
ฉันจะค้นหาผู้ให้บริการอินเทอร์เน็ต (ISP) ของฉันโดยใช้สคริปต์ทุบตีได้อย่างไร
ฉันต้องการใช้ชื่อผู้ให้บริการอินเทอร์เน็ตในสคริปต์และฉันไม่รู้ว่าฉันจะทำสิ่งนี้ได้อย่างไร โปรดช่วยฉันขอบคุณล่วงหน้า
21 bash  scripts 

3
ความแตกต่างระหว่าง '.' , '?' และ '*' ในนิพจน์ปกติ
ฉันจะได้รับตัวอย่างว่าองค์ประกอบสามอย่างนี้ (เรียกว่า metacharacters?) แตกต่างกันอย่างไร ฉันรู้ว่านั่น*หมายถึงทั้งหมดหรือเปล่า แต่ฉันไม่แน่ใจว่ามันเป็นวิธีที่ถูกต้องในการคิดหรือไม่ ในทางกลับกัน.และ?ดูเหมือนกัน พวกมันตรงกับตัวละครตัวหนึ่งใช่มั้ย
21 bash  regex 

4
วิธีการใส่รหัสผ่านเพียงครั้งเดียวในสคริปต์ทุบตีต้องใช้ sudo
ข้อมูล ฉันต้องการให้ผู้ใช้โอเปอเรเตอร์บนเครื่องนี้ติดตั้ง cifs ของตัวเอง sudoersไฟล์แล้วมี/bin/mount -t cifs //*/* /media/* -o username=*คำสั่งสำหรับผู้ประกอบการทั้งหมด ฉันต้องการให้ผู้ใช้เมาcifsนต์แชร์ผ่านสคริปต์ที่พิมพ์รหัสผ่านเพียงครั้งเดียวไม่ใช่สองครั้ง รหัสผ่าน sudo และรหัสผ่าน cifs เหมือนกัน สิ่งที่ฉันมีอยู่แล้ว สคริปต์นี้ใช้งานได้: #!/bin/bash sudo 'mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER' ... แต่ผู้ใช้ต้องพิมพ์รหัสผ่านเดียวกันสองครั้ง! ครั้งเดียวสำหรับ sudo ครั้งหนึ่งสำหรับเขานั้นเอง สิ่งนี้จะได้ผล: #!/bin/bash echo -n Password: read -s szPassword echo $szPassword | sudo -S sh -c 'echo $szPassword …
21 bash  scripts  sudo 

4
อ่านบรรทัดจากไฟล์ข้อความและสร้างไฟล์ข้อความสำหรับแต่ละชื่อในแต่ละบรรทัด
สมมติว่าฉันมีไฟล์ข้อความเช่น: john george james stewert ด้วยทุกชื่อในบรรทัดแยกต่างหาก ฉันต้องการที่จะอ่านบรรทัดของไฟล์ข้อความนี้และสร้างแฟ้มข้อความสำหรับแต่ละชื่อที่ชอบ: john.txt, george.txtฯลฯ ฉันจะทำสิ่งนี้ใน Bash ได้อย่างไร

2
ไฟล์. bashrc คืออะไรและทำหน้าที่อะไร
ฉันไม่สามารถหาข้อมูลที่ชัดเจนเกี่ยวกับ.bashrcไฟล์และสิ่งที่ทำ ขอบคุณสำหรับความช่วยเหลือทั้งหมดที่ผ่านมา ดูเหมือนว่าสคริปต์นี้จะทำทุกอย่างตั้งแต่การระบายสีเสร็จสมนามและประวัติเชลล์ ฯลฯ มีอะไรที่ดูเหมือนจะไม่เป็นประโยชน์หรือไม่?
21 bash  bashrc 


5
มีคู่มือใดบ้างในการรับรายการปุ่มลัด bash หรือไม่
มีทางลัดมากมายที่ฉันใช้ขณะที่โต้ตอบกับบรรทัดคำสั่ง bashเพื่อให้การทำงานง่ายขึ้นและเร็วขึ้น ชอบ: ctrl+ L: เพื่อล้างหน้าจอ ctrl+ a/ ctrl+ e: เพื่อเลื่อนจุดเริ่มต้น / สิ้นสุดของบรรทัด ctrl+ r: เพื่อค้นหาประวัติคำสั่งเพียงแค่เขียนตัวอักษรไม่กี่ตัว ctrl+ u/ ctrl+ y: เพื่อตัด / วางสาย และอื่น ๆ อีกมากมายที่ฉันอยากรู้และซึ่งจะเป็นประโยชน์ในการเรียนรู้อย่างแน่นอน ฉันต้องการทราบว่าฉันจะรับรายชื่อทางลัดเหล่านี้ใน Ubuntu ได้จากที่ใด มีคู่มือใดบ้างที่แสดงรายการทางลัดเหล่านี้ บันทึก: ฉันต้องการรับรายการทางลัดและการกระทำของพวกเขาในที่เดียว มันจะช่วยให้เรียนรู้พวกเขามากมายในช่วงเวลาสั้น ๆ ดังนั้นมีวิธีที่เราจะได้รับรายการเช่นนี้? แม้ว่าจะขอบคุณสำหรับคำตอบที่ได้รับที่นี่ ..

7
จะบันทึกคำสั่ง Bash ทั้งหมดโดยผู้ใช้ทั้งหมดบนเซิร์ฟเวอร์ได้อย่างไร?
บริษัท ขนาดเล็กของเราใช้งาน Ubuntu Server 11.10 ซึ่งมีผู้ใช้สองคนที่สามารถเข้าถึง SSH ได้ เทอร์มินัลจริงบางครั้งก็ใช้เช่นกัน เราจะบันทึกการทำงานของคำสั่ง Bash แบบโลคัลพร้อมกับการประทับเวลาของผู้ใช้และผู้ใช้ได้อย่างไร เราสามารถสันนิษฐานได้ว่าไม่มีใครชั่วร้ายและพยายามหลีกเลี่ยงการบันทึกอย่างแข็งขัน แต่เรายังต้องการให้ผู้ใช้ไม่ให้มีการเข้าถึงการเขียนโดยตรงไปยังไฟล์บันทึกของพวกเขา ต้องจัดการเซสชันพร้อมกันอย่างถูกต้อง
21 bash  logging 

4
ฉันจะสอนทุบตีใน Ubuntu คำบางคำสาปได้อย่างไร
เมื่อทุบตีพบคำสั่งที่ไม่รู้จัก (คำ?) มันทำเช่นนี้: The program 'hello' can be found in the following packages: * hello * hello-debhelper Try: sudo apt-get install <selected package> สิ่งที่ฉันอยากรู้คือวิธีการทำเช่นนี้ฉันสามารถแก้ไขหรือเพิ่มบางอย่างก่อนที่จะข้ามตรวจสอบคำที่ไม่รู้จักจากพจนานุกรมที่ปลูกในบ้านซึ่งจะมีวลี: คู่คำตอบที่สามารถส่งไปยังผลลัพธ์ ฉันมีความผิดในการมองหามันไม่พอ .. แต่คู่มือทุบตีเล็ก ๆ น้อย ๆ ที่ฉันพยายามขุดขึ้นมานั้นไม่มีอะไรเลย บางทีฉันกำลังดูที่ผิดที่ .. ตัวชี้ใด ๆ และใช่ฉันทำเช่นนี้ทุกครั้งที่ฉันพิมพ์ wtf เมื่อโปรแกรมล้มเหลวฉันต้องการสิ่งที่ดีที่ส่งกลับมาหาฉัน ...
21 bash  bashrc 

4
วิธีบันทึกเอาต์พุตจากคำสั่ง (เช่น. diff) ลงในตัวแปร
ฉันต้องการที่จะทดสอบว่ามีผลใด ๆ จากdiff(ทดสอบว่าไฟล์จะเหมือนกัน) echo "Passed $x" else echo "Failed $x"ถ้าไม่มี ฉันมาพร้อมกับขั้นตอน intermidiate (บันทึกผลลัพธ์จาก diff ไปยังไฟล์จากนั้นอ่านจากไฟล์) diff "./helloworld$x.out" "./output/helloworld$x.out" > tmp.txt; output="`cat tmp.txt`"; if [ "$output" = "" ]; then echo "Passed $x"; else echo "Failed $x"; fi; ฉันแน่ใจว่าสามารถปรับปรุงรหัสได้หรือไม่ คำถามหลักคือ: เป็นไปได้หรือไม่ที่จะบันทึกผลลัพธ์จากdiffตัวแปรโดยตรงหรือไม่?
21 bash 

1
ไฟล์ ~ / .bashrc ถูกสร้างขึ้นที่จุดใด
ตัวอย่างเช่นถ้าฉันต้องรันคำสั่งadduser testจะมีการสร้าง. bashrc โดยอัตโนมัติเมื่อสร้างโฮมไดเร็กตอรี่สำหรับผู้ใช้testหรือไม่? หากยังไม่ได้สร้างเมื่อสร้างผู้ใช้ภายใต้เงื่อนไขใดที่สร้างขึ้น นอกจากนี้หากฉันเพิ่มไฟล์. bashrc ลงในโฮมไดเรกทอรีของผู้ใช้ระบบปฏิบัติการนั้นจะถูกเขียนทับหรือไม่ ขอบคุณล่วงหน้า.

1
ในสคริปต์ฉันจะทราบได้อย่างไรว่าไฟล์กำลังถูกเขียนโดยกระบวนการอื่นหรือไม่?
ฉันใหม่มากในการทุบตีสคริปต์ดังนั้นฉันอาจเห่าต้นไม้ผิด แต่นี่คือสถานการณ์ปัจจุบันของฉัน: ในบทที่ผมเริ่มต้นsoffice ; เพื่อแปลงodtเป็นpdf มันดูเหมือนว่าsofficeแยกตัวเองจากกระบวนการของสคริปต์และเดินออกไปทำสิ่งที่เป็นของตัวเอง .. เอาล่ะที่ดีของ; แอพ GUI มักจะทำเช่นนั้น ... อย่างไรก็ตามฉันต้องรอจนกว่าPDFใหม่จะถูกเขียนอย่างสมบูรณ์เนื่องจากขั้นตอนต่อไปของฉันเกี่ยวข้องกับการประมวลผลpdfใหม่นั้น (เท่าที่ฉันรู้) ฉันไม่สามารถใช้ ID กระบวนการของ soffice ได้เพราะอาจเป็นกระบวนการที่ใช้งานอยู่ก่อนสคริปต์ของฉันจะเริ่มทำงานเช่น sofficeอาจเปิดอยู่แล้วสำหรับกิจกรรม GUI ปกติสำหรับเอกสาร / งานนำเสนอ / สเปรดชีตอื่นที่ไม่เกี่ยวข้อง ประเด็นสำหรับฉันคือก่อนที่ฉันจะสามารถดำเนินการต่อได้การเขียนPDFใหม่จะต้องเสร็จสิ้น ... มีวิธีใดบ้างที่จะกำหนดว่าเมื่อใดที่ไฟล์จะไม่เปิดไปยังกระบวนการอื่นในโหมด "เขียน" อีกต่อไป ...

1
ฉันจะอ่านไฟล์ sh ได้อย่างไรในขณะที่มันกำลังทำงานอยู่ แต่ถูกลบไปแล้ว?
ในการสัมภาษณ์พวกเขาถามคำถามนี้กับฉัน มีไฟล์ sh ที่กำลังทำงานอยู่ แต่ถูกลบไปนับตั้งแต่เริ่มการทำงาน พวกเขาต้องการให้ฉันค้นหากระบวนการและอ่านไฟล์ ฉันจัดการเพื่อค้นหากระบวนการด้วย ps -ef | grep test.sh และพยายามอ่านโดยใช้ cat /proc/PID/cmdline test.sh แต่มันบอกว่า no such file or directory ฉันไม่รู้ว่าควรทำอะไรต่อไปดังนั้นฉันต้องข้ามสิ่งนี้ไป อาจเป็นคำถามง่าย ๆ แต่นั่นเป็นคำถามที่ดีสำหรับฉันและฉันต้องการทราบคำตอบจริงๆ พวกคุณช่วยได้ไหม

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