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

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

8
จะฆ่าได้ถ้ากระบวนการกำลังทำงานอยู่เท่านั้น?
ขณะนี้ฉันใช้บรรทัดเช่นนี้ในไฟล์สคริปต์ sh ของฉัน: kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'` แต่ฉันสงสัยว่าจะเรียกใช้เฉพาะเมื่อกระบวนการ ( myServerที่นี่) กำลังทำงานอยู่หรือไม่


2
วิธีสร้างเอกสารคำในรูปแบบ docx ด้วยเทอร์มินัล
ฉันรู้ว่าฉันสามารถสร้างไฟล์ docx ได้อย่างง่ายดายด้วย libreOffice แต่ฉันแค่ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้ bash ทุกคนสามารถอธิบายได้ว่าเป็นไปได้ด้วยเทอร์มินัลหรือไม่ คำสั่ง touch ทำงานได้ดี แต่ไม่ได้ระบุส่วนขยายใด ๆ
13 bash 

1
บรรทัดสคริปต์ทุบตีมีความหมายอะไรที่ขึ้นต้นด้วย # $?
ฉันพบสคริปต์นี้bashใน GitHub ที่ฉันต้องการใช้สำหรับงานของฉันเอง คำถามของฉันมีดังต่อไปนี้บรรทัดที่ 2 ถึง 5 หมายถึงอะไร พวกเขาเพียงแค่แสดงความคิดเห็นหรือพวกเขาทำหน้าที่ใด ๆ ? #!/bin/bash #$ -l h_rt=72:00:00 #$ -V #$ -N index_calc #$ -j y source ~/modules.sh cd $1 l_file=`find . -name 'L*stack' -type f` for l in $l_file; do echo "Running on file:" echo $l extract=${l:0:45} name=${extract}_index.tif echo "Name of index …

4
'rm files *' ลบการจับคู่ทั้งหมดออกจากไดเรกทอรีย่อยทั้งหมดหรือไม่?
ฉันต้องการลบไฟล์ใด ๆ ที่ดูเหมือนwordpress-891.sqlจากไดเรกทอรีปัจจุบัน (ไม่อยู่ในไดเรกทอรีย่อย) จะrm wordpress-*.sqlหลอกลวงหรือจะลบการแข่งขันออกจากไดเรกทอรีย่อยด้วยหรือไม่

4
Windows filepath ถูกแปลงเป็น Linux filepath
ฉันมีเส้นทาง Windows ในตัวแปรทุบตีเป็นสตริง: file='C:\Users\abcd\Downloads\testingFile.log' /c/Users...ฉันพยายามที่จะแปลงเส้นทางนี้เข้ามาในเส้นทางลินุกซ์ที่เริ่มต้นด้วย ความพยายามของฉัน ผลงานดังต่อไปนี้: file=${file/C://c} file=${file//\\//} echo $file > /c/Users/abcd/Downloads/testingFile.log ปัญหา ที่นี่ฉันได้ทำสิ่งนี้สำหรับสตริงที่มี filepath เหตุผลที่ฉันถามคำถามนี้คือฉันต้องแปลง 20 สตริงดังกล่าวในสคริปต์ทุบตีใน Ubuntu 16.04 และทุกครั้งที่ฉันทำเช่นนี้ฉันต้องเขียน 2 บรรทัดต่อการแปลง - มันใช้พื้นที่มาก! คำถาม มีวิธีรวม 2 คำสั่งหรือไม่ file=${file/C://c} file=${file//\\//} เป็นคำสั่งเดียว?

2
ปิดใช้งานตัวเลือกการลบของ crontab ใน CLI
ฉันจะปิดการใช้งานคำสั่งเฉพาะได้crontab -rอย่างไร? มันเกิดขึ้นกับฉันสองครั้งแล้วที่ฉันตั้งใจเรียกใช้เพราะEกุญแจของฉันอยู่ติดกับRกุญแจ พิมพ์ผิดเล็กน้อยนั้นเพียงพอแล้ว crontab ของคุณก็หายไป

3
ฉันจะค่อยๆเข้ารหัสไฟล์ที่กำลังดาวน์โหลดอยู่ได้อย่างไร?
ฉันเคยดาวน์โหลดไฟล์และใช้opensslเพื่อเข้ารหัสไฟล์ซึ่งไม่เพียงพอสำหรับฉัน ฉันจะเข้ารหัสการดาวน์โหลดทีละน้อยในขณะที่กำลังดาวน์โหลดไฟล์ได้อย่างไร ฉันคิดเกี่ยวกับการใช้curlและopensslไปป์ แต่ไม่สามารถคิดออก มีเครื่องมือใดที่ดีกว่าในการทำสิ่งนี้?
13 bash  scripts  wget  openssl  curl 

5
วิธีการเขียนสคริปต์ที่ทำงานโดยมีหรือไม่มีข้อโต้แย้ง?
ฉันมีสคริปต์ทุบตีซึ่งไปเช่นนี้ #!/bin/bash if [ $1 = "--test" ] || [ $1 = "-t" ]; then echo "Testing..." testing="y" else testing="n" echo "Not testing." fi ดังนั้นสิ่งที่ฉันต้องการที่จะสามารถทำได้ไม่เพียง แต่เรียกใช้ด้วย./script --testหรือ./script -tแต่ยังไม่มีข้อโต้แย้ง (เพียง./script) แต่ดูเหมือนว่าถ้าฉันทำกับรหัสปัจจุบันผลลัพธ์เป็นเพียง: ./script: line 3: [: =: unary operator expected ./script: line 3: [: =: unary operator expected Not testing. ดังนั้นฉันจะตั้งโปรแกรมเพื่อให้ทำงานโดยไม่มีข้อโต้แย้งทั้งหมดจะทำelseโดยไม่โยนข้อผิดพลาด? ผมทำอะไรผิดหรือเปล่า?

4
สร้างแถบความคืบหน้าในการทุบตี
ฉันจะสร้างแถบความคืบหน้าด้วยการทุบตีได้อย่างไร นี่คือสคริปต์ของฉัน: #!/bin/bash pass='number1 number12 number13 number14 number15 number16' chk='number14' for i in $pass ; do if [ "$i" == "$chk" ]; then echo ' Found ^_^' else echo 'loading 50%' fi done ฉันต้องการแทนที่echo 'loading 50%'ด้วยอะไรก็ได้เพื่อสร้างแถบความคืบหน้า

1
ฉันจะส่งคำสั่งไปยังหน้าต่างเทอร์มินัลเฉพาะได้อย่างไร
ฉันต้องการเขียนสคริปต์สำหรับการเปิดหลาย ๆ โปรแกรม (เซิร์ฟเวอร์) พร้อมกันในเทอร์มินัลแยกกัน - ไม่สำคัญว่าจะใช้อันไหน - และกำหนดคำสั่งต่าง ๆ ให้กับเทอร์มินัลต่าง ๆ ด้วยคำสั่ง เป็นไปได้ไหม อาจจะเป็นอย่างนี้: เปิดเทอร์มินัล 1 เปิด terminal2 // พร้อมกันกับ 1 command1 // ดำเนินการใน terminal1 โดยไม่ต้องเปิดหน้าต่างเทอร์มินัลใหม่ command2 // ดำเนินการใน terminal2 โดยไม่ต้องเปิดหน้าต่างเทอร์มินัลใหม่ ... ฉันสามารถติดฉลากเทอร์มินัล windows เพื่อรันคำสั่งภายในเทอร์มินัลที่ถูกต้องได้หรือไม่? ฉันต้องการดูเทอร์มินัลทั้งหมดในขณะที่โปรแกรมกำลังทำงาน - โปรแกรมของฉันมีอาร์กิวเมนต์สำหรับการพิมพ์การติดตาม / การดีบักไปยังเทอร์มินัล ดังนั้นฉันต้องการดูว่ามีการแลกเปลี่ยนข้อความระหว่างกันอย่างไร หมายเหตุ: ฉันไม่ค่อยกังวลเกี่ยวกับความปลอดภัยของข้อมูลที่แลกเปลี่ยนเนื่องจากสคริปต์นี้ควรทำหน้าที่เป็น "การจำลอง" ฉันได้กำหนดค่าเซิร์ฟเวอร์แต่ละเครื่องให้เรียกใช้จากพอร์ตที่จัดสรรบน localhost

7
การเปลี่ยนชื่อไฟล์เพื่อเพิ่มคำต่อท้าย
ฉันต้องการคำสั่งเพื่อเปลี่ยนชื่อไฟล์ทั้งหมดในไดเรกทอรีการทำงานปัจจุบันในทางที่ชื่อไฟล์ใหม่จะเหมือนเดิม แต่รวมถึงคำต่อท้ายที่สอดคล้องกับจำนวนบรรทัดของไฟล์ต้นฉบับ (เช่นถ้าไฟล์fมี 10 บรรทัดจากนั้นควรเปลี่ยนชื่อเป็นf_10) นี่คือความพยายามของฉัน (ไม่ทำงาน): linenum=$(wc -l); find * -type f | grep -v sh | rename 's/^/ec/'*




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