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

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

3
ฉันสามารถใช้ '!!' ในนามแฝงหรือสคริปต์?
ใน Terminal ฉันสามารถใช้!!ซึ่งจะอ้างอิงคำสั่งก่อนหน้าของฉัน เป็นไปได้ไหมที่จะใช้สิ่งนี้ในนามแฝง? ฉันลองแล้ว แต่สิ่งที่เกิดขึ้นคือเครื่องหมายอัศเจรีย์คู่ถูกตีความตามตัวอักษรอย่างแท้จริง สิ่งที่ฉันต้องการมีความเป็นไปได้คือ: ฉันป้อนคำสั่งบางอย่าง ฉันพิมพ์นามแฝงที่จะรวมสิ่งที่ป้อนในขั้นตอนที่ 1 หากมีวิธีการใช้สคริปต์ที่ยอมรับได้เช่นกัน

1
ไม่มีการเติมแท็บด้วยเครื่องหมายดอกจัน *
ฉันไม่สามารถแท็บเสร็จสมบูรณ์จากบรรทัดคำสั่งใน gnome-terminal เมื่อฉันมีเครื่องหมายดอกจันในบรรทัดคำสั่ง เชลล์เริ่มต้นคือทุบตีโดยใช้ gnome-terminal ตัวอย่างเช่น, การทำงานนี้เพื่อคัดลอกไฟล์เดียวไปยัง dir โดยใช้ tab-completion ใน~/files/ไดเรกทอรี : cp ~/file1 ~/files/ อย่างไรก็ตามวิธีนี้ใช้ไม่ได้กับการเติมเต็มแท็บในไดเรกทอรีเมื่อฉันต้องการคัดลอกหลายไฟล์ลงใน dir (ฉันต้องพิมพ์หรือวางด้วยตนเอง~/files/): cp ~/file* ~/files/ (สมมติว่ามีอยู่ไฟล์file1, file2, file3และfile4) และนี่จะทำให้แท็บสมบูรณ์ไดเรกทอรี (และทำงานตามที่ฉันคาดหวังว่า regex จะทำงาน, คัดลอกไฟล์เหล่านั้นทั้งหมดลงใน~/files/): cp ~/file?* ~/files/ ดังนั้นฉันมีวิธีแก้ปัญหา แต่ฉันรู้ว่าฉันเคยทำงานนี้มาก่อนโดยไม่ต้องใช้?และฉันไม่แน่ใจว่าจะทำอย่างไรหรือเมื่อฉันทำมันหาย ในฐานะผู้ใช้บรรทัดคำสั่งที่ใช้งานหนักฉันเคยใช้ชีวิตอยู่ แต่มันก็ค่อนข้างน่ารำคาญเมื่อเร็ว ๆ นี้ EDIT1 +: ผลผลิตของ $ compopt cp compopt +o bashdefault +o default +o …

4
การอ่านและการเขียนไฟล์: คำสั่ง tee
เป็นที่ทราบกันดีว่าคำสั่งเช่นนี้: cat filename | some_sed_command >filename ลบไฟล์ชื่อไฟล์เนื่องจากการเปลี่ยนเส้นทางเอาต์พุตที่ถูกเรียกใช้งานก่อนคำสั่งทำให้ชื่อไฟล์ถูกตัดทอน หนึ่งสามารถแก้ปัญหาด้วยวิธีต่อไปนี้: cat file | some_sed_command | tee file >/dev/null แต่ฉันไม่แน่ใจว่าสิ่งนี้จะใช้ได้ในทุกกรณี: จะเกิดอะไรขึ้นถ้าไฟล์ (และผลลัพธ์ของคำสั่ง sed) มีขนาดใหญ่มาก ระบบปฏิบัติการจะหลีกเลี่ยงการเขียนทับเนื้อหาบางส่วนที่ยังไม่ได้อ่านได้อย่างไร? ฉันเห็นว่ายังมีคำสั่งฟองน้ำซึ่งควรทำงานในกรณีใด ๆ : มันเป็น "ปลอดภัย" กว่าที
10 command-line  bash  tee 

3
ฉันจะปิดการแสดงไฟล์ที่ซ่อนเป็นระยะได้อย่างไร
ดังนั้นเพื่อที่จะซ่อนไฟล์และโฟลเดอร์บางอย่างเพื่อให้ได้ตาที่ไม่มีทักษะฉันได้แก้ไขชื่อของพวกเขาโดยใส่จุดไปที่จุดเริ่มต้นของชื่อ มันใช้งานได้และไฟล์ถูกซ่อนอยู่ คนที่มีจมูกยาวที่ไม่ชำนาญจะไม่เห็นพวกเขา และการใช้ Nautilus ฉันหัน "แสดงไฟล์ที่ซ่อน" และปิดโดยใช้คีย์ผสม-Ctrl Hละเอียด. แต่ฉันไม่เคยรู้เลยว่าจะเปิดหรือปิดคุณสมบัตินี้หรือไม่ ฉันต้องการเขียนสคริปต์ทุบตีที่เริ่มต้นโดยอัตโนมัติทุก ๆ 10 นาทีและจะปิดคุณสมบัติ "แสดงไฟล์ที่ซ่อน" ดังนั้นฉันจะมั่นใจได้ว่าดวงตาที่ไม่มีจมูกจะไม่เห็นไฟล์ที่ซ่อนอยู่ ตอนนี้ปัญหาคือ: ฉันไม่รู้ว่าจะใช้คำสั่งทุบตีอะไรถ้ามี ฉันค่อนข้างมั่นใจว่าสคริปต์ทุบตีสามารถทำเกือบทุกอย่างได้โปรดช่วยด้วย! ฉันไม่ทราบวิธีเริ่มสคริปต์ทุบตีอัตโนมัติทุก ๆ xx วินาทีหรือนาที ฉันต้องทำอย่างไร?
10 bash  scripts  files  schedule 

4
ป้องกันคำสั่งทั้งหมดจากการถูกกำหนดเป็นนามแฝง
มีวิธีป้องกันไม่ให้คำสั่งทั้งหมดถูกกำหนดเป็นนามแฝงหรือไม่? ตัวอย่างเช่นผู้ใช้ไม่สามารถกำหนดrmหรือคำสั่งอื่น ๆ (คำสั่งเริ่มต้นของ Ubuntu) เป็นชื่อนามแฝง
10 bash  alias 

1
เลือกผลลัพธ์เฉพาะจากคำแนะนำการทำให้สมบูรณ์
สมมติว่าฉันมี 3 ไฟล์ในไดเรกทอรีเฉพาะ: abc.txt, aww.txt, ant.txt ถ้าฉันทำ: cat a(และกดที่แท็บเพื่อดูตัวเลือก) เทอร์มินัลจะแสดง 3 ชื่อไฟล์:abc.txt, aww.txt, ant.txt มีวิธีการเลือกผลลัพธ์ที่ n แทนที่จะพิมพ์โดยระบุหมายเลขดัชนีในผลลัพธ์ที่เทอร์มินัลแสดงหรือไม่ สิ่งที่ต้องการ: cat a2จะได้รับไฟล์ที่สอง ( aww.txt)?

3
วิธีแทรกหลายบรรทัดด้วย sed
ฉันต้องการเพิ่มสิ่งนี้ #this ##is my text ก่อนที่จะสาย the specific line ฉันลองสิ่งนี้ sed -i '/the specific line/i \ #this ##is my text ' text.txt แต่เพิ่มเฉพาะใน 'ข้อความ' ฉันยังพยายามชุดต่างๆด้วย\และ" "แต่ไม่มีอะไรทำงาน
10 bash  sed 

5
วิธีรันคำสั่งใน gnuplot โดยใช้เชลล์สคริปต์
สิ่งที่ฉันต้องการจะทำคือเขียนสคริปต์ที่เปิดตัวโปรแกรมก่อนแล้วจึงบอกให้รันคำสั่งจำนวนมากแล้วออกจากโปรแกรม ให้ไปด้วยตัวอย่าง ฉันเขียนสคริปต์นี้myscript.shและมันไม่ทำงานอย่างที่ฉันต้องการ สิ่งที่มันเป็นเพียงเรียกใช้ gnuplot และรอให้มันเลิกแล้วรันคำสั่งอื่น ๆ ; ซึ่งสร้างข้อผิดพลาดอย่างเห็นได้ชัด #!/bin/bash gnuplot plot sin(x) pause -1 quit ฉันคิดว่ามันชัดเจนว่าฉันกำลังพยายามทำอะไร ถ้าไม่เช่นนั้นแจ้งให้เราทราบในความคิดเห็น

5
ทำไมกระบวนการของฉันยังคงทำงานหลังจากที่ฉันออกจากระบบ?
หลังจากเข้าสู่ระบบsshฉันพิมพ์คำสั่งนี้ในbash: sleep 50000000000000 & จากนั้นฉันก็kill -9คือsleepกระบวนการหลักของกระบวนการ (เช่นbash) จากนั้นหน้าต่างเทอร์มินัลจะยกเลิกการเชื่อมต่อพร้อมกัน เมื่อฉันเข้าสู่ระบบอีกครั้งฉันพบว่าsleepกระบวนการยังมีชีวิตอยู่ คำถาม : ทำไมsleepกระบวนการสามารถอยู่รอดได้เมื่อฉันออกจากระบบและปิดเครื่อง? ในใจของฉันทุกอย่างยกเว้น daemons และnohupโปรแกรมจะถูกฆ่าระหว่างออกจากระบบ หากsleepสามารถอยู่รอดด้วยวิธีนี้แสดงว่าฉันสามารถใช้วิธีนี้แทนnohupคำสั่งได้หรือไม่
10 bash 

1
หลังจาก `chown -R` คอมไพล์ช้าสุด ๆ
ฉันมีโครงการ GIT ขนาดใหญ่ที่มี submodules GIT หลายตัวอยู่ภายใน ฉันเปลี่ยนความเป็นเจ้าของซ้ำ ( chown -r) จากrootเป็นผู้ใช้ของฉันสำหรับแต่ละไฟล์ในโครงการของฉัน ตอนนี้คำสั่ง git ใช้เวลานานในการทำให้สมบูรณ์และดูเหมือนว่าจะใช้ CPU 99% ปัญหาคืออะไร ฉันทำ sudo chown -R my_user my_project/ UPDATE ดูเหมือนจะไม่เกี่ยวข้องกับ GIT เท่านั้นคำสั่งเทอร์มินัลอื่นก็ใช้เวลามากเช่นกัน topแสดงให้ฉันเห็นการใช้ git 100% เป็นเวลา 15 วินาทีแทนที่จะเป็น 0-1 วินาทีปกติ
10 bash  git  ownership 

2
ไปที่คำสั่ง“ พิมพ์”
ฉันต้องการค้นหาคำสั่งหลายประเภท เป็นไปได้ที่จะไพพ์หรือxargsผลลัพธ์การค้นหาจากfindลงในtypeคำสั่งใน Linux? ตัวอย่างเช่น: find . -name anacron | type หรือ find . -name anacron | xargs type

2
การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในเชลล์สคริปต์
พิจารณาสคริปต์ Bash นี้: #!/bin/bash echo Enter any character read char case $char in [a-z]) echo Lower case letter ;; [A-Z]) echo Upper case letter ;; [0-9]) echo Number ;; ?) echo Special char ;; *) echo You entered more than one character ;; esac หากฉันป้อน 'a' ผลลัพธ์จะเป็นตัวอักษรพิมพ์เล็กและจะเหมือนกันสำหรับ 'A' ... ฉันจะเอาชนะสิ่งนี้ได้อย่างไร
10 bash  scripts 

2
สิ้นสุดหาง -f หลังจากพิมพ์ n บรรทัด
ฉันมีดังต่อไปนี้ กระบวนการ Java เขียนล็อกไฟล์ เชลล์สคริปต์เริ่มต้นกระบวนการ Java ฉันต้องอ่านไฟล์บันทึกหลังจากเริ่มกระบวนการ Java เพื่อตรวจสอบการเริ่มต้นที่ถูกต้อง ฉันลองแล้วtail -fแต่มันยังคงอยู่ต่อไปตลอดไป ฉันต้องtailหยุดหลังจากพิมพ์ n บรรทัด มีวิธีเช่น-nตัวเลือกสำหรับสาย previuos หรือไม่

1
ฉันจะลบการตั้งค่าพร็อกซีชั่วคราวได้อย่างไร
ฉันตั้งค่าพร็อกซีของฉันโดยใช้คำสั่งต่อไปนี้ export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport เมื่อฉันทำ echo $http_proxy ฉันเข้าใจ http://cavs@students:cavsuon@proxy.uonbi.ac.ke:80 อย่างไรก็ตามเมื่อฉันทำ unset $http_proxy ฉันได้รับข้อผิดพลาด -bash: unset: `http://cavs@students:cavsuon@proxy.uonbi.ac.ke:80': not a valid identifier ดังนั้นฉันทำ $http_proxy = "" ซึ่งทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้ -bash: http://cavs@students:cavsuon@proxy.uonbi.ac.ke:80: No such file or directory ฉันจะลบการตั้งค่าพร็อกซีนี้ได้อย่างไร
10 bash  proxy 

2
ฉันจะสลับทัชแพดได้อย่างไรขึ้นอยู่กับว่าเมาส์เชื่อมต่ออยู่หรือไม่?
ฉันต้องการให้ทัชแพดของฉันปิดการใช้งานโดยอัตโนมัติเมื่อเชื่อมต่อเมาส์ภายนอกและเปิดใช้งานเมื่อไม่มี ฉันได้ลองใช้touchpad-indicatorแต่ล้มเหลวในกรณีที่คอมพิวเตอร์ถูกสลีปด้วยการเชื่อมต่อกับเมาส์และถูกปลุกให้ถอดการเชื่อมต่อกับเม้าส์ ฉันพยายามทำให้สคริปต์ต่อไปนี้เป็น daemon เพื่อแก้ปัญหานี้ แต่ฉันไม่สามารถใช้งานได้: #!/bin/bash declare -i TID declare -i MID TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'` MID=`xinput list | grep -Eo 'Mouse\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'` if [ $MID -gt 0 ] then xinput disable $TID else xinput enable $TID fi ฉันเหนื่อย start-stop-daemon …
10 bash  xorg  touchpad 

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