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

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

2
Backspace ไม่ทำงานในการรันสคริปต์ทุบตี
ฉันใช้งานสคริปต์ง่าย ๆ ที่อ่านทีละบรรทัดและพิมพ์บรรทัดที่ป้อนกลับไปที่เทอร์มินัล: while read CMD; do echo $CMD done มันใช้งานได้ดี แต่เมื่อฉันพยายามแก้ไขบรรทัดด้วยbackspaceอักขระมันพิมพ์ออกมา^?แทนที่จะลบตัวอักษร และเมื่อผมกดCtrl+ ออกเป็นbackspace ^Hพฤติกรรมนี้สามารถแก้ไขได้อย่างไรเพื่อbackspaceลบอักขระแทนการเพิ่มอักขระเหล่านี้ ฉันพยายามstty erase '^?'สั่งการ แต่ไม่สำเร็จ

3
คัดลอกไฟล์ทุกไฟล์ในโครงสร้างไดเรกทอรีลงในพา ธ เฉพาะเมื่อไฟล์ไม่มีอยู่แล้ว
ต้องการคัดลอกทุกไฟล์จากโครงสร้างไดเรกทอรีไปยังไดเรกทอรีเฉพาะเมื่อไม่มีไฟล์อยู่แล้ว มีส่วนแรกจากคำถาม Stack Overflow นี้ : find . -type f -exec cp {} /target-directory \; ฉันจะตรวจสอบว่าไฟล์นั้นมีอยู่หรือไม่? หากไม่มีให้คัดลอกไฟล์หรือข้ามไป

2
วิธีที่ถูกต้องในการสร้างนามแฝงเพื่อจัดแพคเกจใน Ubuntu 16.04 คืออะไร?
TL; DR จะสร้างนามแฝงทั้งระบบเพื่อจัดแพ็คเกจใน Ubuntu 16.04 ได้อย่างไร? รายละเอียดเพิ่มเติม ฉันต้องการติดตั้ง Blender อย่างรวดเร็ว ฉันพบว่ามีแพ็คเกจblender-tpawซึ่งสามารถติดตั้งได้ แต่น่าเสียดายที่หลังจากติดตั้งมันมีอยู่ในภายใต้ชื่อสถานีไม่blender-tpawblender การใช้นามแฝงสแนป ดังนั้นก่อนอื่นฉันได้พยายามเรียกใช้คำสั่งsudo snap alias blender-tpaw blenderตาม: https://insights.ubuntu.com/2017/01/28/ubuntu-core-how-to-enable-aliases-for-your-snaps-คำสั่ง/ . แต่นี่คือสิ่งที่ฉันมี: error: cannot perform the following tasks: - Enable aliases for snap "blender-tpaw" (cannot enable alias "blender" for "blender-tpaw", no such alias) สร้างลิงก์สัญลักษณ์ใน / usr / local / bin ถ้าอย่างนั้นฉันก็พยายามที่จะสร้างลิงก์สัญลักษณ์sudo …

1
สคริปต์ไม่ทำงานเมื่อถูกเรียกจากภายนอก
ฉันใช้สคริปต์ง่าย ๆ ในการสร้าง. mp3 จากไฟล์. mp4: #!/bin/bash for i in *.mp4 do ffmpeg -i "$i" -ab 128k "${i%mp4}mp3" done สคริปต์ทำงานได้ดีเมื่อทำงานจากเดสก์ท็อปหรือเรียกผ่านเทอร์มินัล เมื่อสคริปต์ถูกเรียกใช้จากสคริปต์ภายนอกสคริปต์จะไม่สามารถเรียกใช้และส่งคืนได้ "* .mp4: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" ฉันสงสัยว่าปัญหานี้เกิดจากการขยายตัวของเชลล์ แต่ไม่สามารถอธิบายวิธีแก้ไขได้ในสถานการณ์นี้
8 bash  scripts 

7
Bash scripting - วิธีเชื่อมสตริงต่อไปนี้?
นี่เป็นส่วนหนึ่งของbashสคริปต์ที่ทำการcpuidค้นพบใน Linux (Ubuntu / Fedora): /usr/bin/cpuid > id.txt CPUID=id.txt echo `grep "extended model" $CPUID` | sed 's/0x//' | awk ' { print $4 } ' > cpu.txt a=`cat cpu.txt` echo `grep "extended family" $CPUID`| sed 's/0x//' | awk ' { print $4 } ' > cpu.txt a+=`cat cpu.txt` ดังนั้นสำหรับแล็ปท็อปของฉันส่วนนี้ของสคริปต์ (แสดงที่นี่) …

5
ดำเนินการทุบตีสคริปต์อย่างแท้จริงทุก ๆ 3 วัน
ฉันต้องการรันเชลล์สคริปต์อย่างแท้จริงทุกๆ 3 วัน การใช้ crontab กับ01 00 */3 * *จะไม่ปฏิบัติตามเงื่อนไขจริงเพราะจะทำงานในวันที่ 31 และจากนั้นอีกครั้งในวันที่ 1 ของเดือน */3ไวยากรณ์เป็นเช่นเดียวกับการพูดว่า 1,4,7 ... 25,28,31 ควรมีวิธีในการทำให้สคริปต์ตรวจสอบเงื่อนไขและออกจากโปรแกรมหาก 3 วันยังไม่ผ่าน ดังนั้น crontab จะเรียกใช้สคริปต์ทุกวัน แต่สคริปต์จะตรวจสอบว่าผ่านไป 3 วันหรือไม่ ฉันยังพบรหัสบางส่วน แต่มันทำให้ฉันมีข้อผิดพลาดทางไวยากรณ์ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม if (! (date("z") % 3)) { exit; } main.sh: line 1: syntax error near unexpected token `"z"' main.sh: line …

2
ฉันจะแสดงข้อความจากไฟล์โดยอัตโนมัติหลังจากเปิดเครื่องคอมพิวเตอร์ในเท็กซ์เอดิเตอร์หรือเทอร์มินัลได้อย่างไร
ฉันต้องการดูรายการงานของฉันทุกครั้งที่เปิดเครื่องคอมพิวเตอร์เช่นจากไฟล์ในเดสก์ท็อป ฉันจะทำมันได้อย่างไร สามารถแสดงบนเทอร์มินัลหรือเปิดไฟล์อะไรก็ได้
8 bash  scripts 

1
วิธีใช้ win explorer เพื่อสร้างโฟลเดอร์สำหรับ Bash บน Ubuntu บน Windows
ฉันจะใช้ Windows Explorer เพื่อสร้างโฟลเดอร์หรือไฟล์ในโฮมไดเร็กตอรี่ของฉันโดยใช้ "Bash บน Ubuntu บน Windows" ได้อย่างไร? ฉันพยายามต่อไปนี้: ป้อน C: \ Users {ผู้ใช้} \ AppData \ Local \ lxss {ชื่อผู้ใช้} ใน Windows Explorer สร้างโฟลเดอร์ชื่อ "สคริปต์" โดยใช้ Windows Explorer เปิด Bash บน Ubuntu บน Windows วิ่ง ls -a ผลลัพธ์: ทั้งหมด 0 มีแผนจะทำอะไรแบบนี้บ้างไหม? การแก้ปัญหา PS-ish: ฉันใช้mkdir& touchin bash เพื่อสร้างโฟลเดอร์และไฟล์เช่นscripts/menu.py …

4
ตรวจพบว่าเครื่องมือกำลังทำงานอยู่แล้ว แต่สำหรับผู้ใช้ปัจจุบันเท่านั้น
จนถึงตอนนี้ฉันใช้ pidof -o %PPID -x "my-tool" ในการตรวจจับ pid ของอินสแตนซ์ที่กำลังทำงานในที่สุดของเครื่องมือของฉัน ไฟล์นี้เป็นเวอร์ชันย่อของไฟล์ my-tool ซึ่งเป็นสคริปต์ bash ที่สามารถเรียกทำงานได้ #!/bin/bash if pidof -o %PPID -x "my-tool"; then echo "Already running" exit 1 fi ... if not running go on แต่ตอนนี้ฉันต้องการอนุญาตให้มีอินสแตนซ์เดียวต่อผู้ใช้และหลายต่อเครื่องดังนั้นเราจึงสามารถมีเครื่องมือของฉันได้ 100 รายการในเวลาเดียวกัน แต่เพียง 1 ต่อผู้ใช้ โปรดทราบว่าฉันต้องการทดสอบเพื่อสร้างบางสิ่งบางอย่างเช่นซิงเกิล หากเครื่องมือเริ่มทำงานและมีอินสแตนซ์อื่นกำลังทำงานอยู่มันจะปิดตัวเอง ในระยะสั้น: ฉันต้องการให้สคริปต์ทุบตีตรวจพบว่าตัวเองกำลังทำงานอยู่สำหรับผู้ใช้ปัจจุบันและในกรณีนี้มันจะต้องออก ทำอย่างไร ?
8 bash 

1
วิธีที่สั้นกว่าสำหรับ apt-get install php7.0- {some modules}
ฉันกำลังติดตั้ง php7.0 และสงสัยว่ามีวิธีที่สั้นกว่าในการติดตั้งโมดูล ปกติฉันพิมพ์: apt-get install php7.0 php7.0-fpm php7.0-mbstring php7.0-mcrypt php7.0-phpdbg php7.0-dev php7.0-curl php7.0-sqlite3 php7.0-json php7.0-gd php7.0-cli มีการแสดงออกปกติดังนั้นคุณไม่ต้องพิมพ์ php7.0 ซ้ำแล้วซ้ำอีก? สิ่งที่ต้องการ: apt-get install php7.0-{fpm mbstring mcrypt phpdbg dev curl sqlite3 json gd cli} ฉันค้นหาสิ่งนี้เป็นเวลาหลายชั่วโมง แต่ไม่พบ ขอบคุณล่วงหน้าสำหรับคำตอบของคุณ
8 apt  bash  regex  php7 

3
Bash Script เพื่อลากและวางไฟล์ไปยังตำแหน่งใหม่
ฉันแน่ใจว่าฉันจะส่งตูดของฉันมาให้ฉันสำหรับคำถามนี้ แต่ฉันก็ดูเหมือนจะไม่สามารถคิดออก ฉันใหม่ในการเขียนสคริปต์ทุบตีดังนั้นไปง่าย ๆ กับฉัน ... ฉันต้องการลากและวางไฟล์ลงในแอปพลิเคชันบนเดสก์ท็อปซึ่งเรียกสคริปต์ทุบตีที่จะย้ายไฟล์นั้นไปยังตำแหน่งที่กำหนดไว้ในสคริปต์ทุบตี นี่คือสิ่งที่มีเพื่อให้ห่างไกล Bash script #! /bin/bash mv $file /path/to/new/directory อย่างไรก็ตามฉันไม่สามารถหาวิธีป้อน$fileตัวแปรเป็นเมื่อฉันลากและวางลงบนแอปพลิเคชันเดสก์ท็อป ฉันจะทำสิ่งนี้ได้อย่างไร เหตุผล: ฉันมีเอกสารที่ฉันต้องอ่านในโฟลเดอร์เดียวและเมื่อฉันอ่านแล้วฉันใส่มันลงในโฟลเดอร์อื่น โดยทั่วไปฉันแค่ต้องการทำให้ง่ายต่อการทำเช่นนี้ ขอบคุณพอล

1
ฉันจะเปิดหน้า man สำหรับคณิตศาสตร์วงเล็บเหลี่ยมได้อย่างไรและพวกเขาเรียกว่าอะไร?
ฉันได้ทำงานกับพวกเขามาระยะหนึ่งแล้ว (สมการทางคณิตศาสตร์$[]ไม่ใช่อาร์เรย์) arrConflicts[0]=$[arrConflicts[0]+1] currentCombination=$[ (arrFiles[0]-1+arrFiles[0]-i)*i/2-arrFiles[0]+j ] จะเรียกหน้าคนได้อย่างไร คณิตศาสตร์นี้เรียกว่าอะไร (ไปที่ google)? มันมีฟังก์ชั่นขั้นต่ำและสูงสุดหรือไม่?
8 bash 

1
วิธีใช้ตัวเลือกการประทับเวลาใน ping
ฉันสังเกตเห็นว่ามีตัวเลือกการประทับเวลา -T ในความช่วยเหลือ ping แต่ฉันไม่รู้วิธีใช้ ฉันเหนื่อย: ping www.google.com -T นี่คือสิ่งที่ฉันได้รับ: Invalid timestamp type ประเภทการประทับเวลาคืออะไรและฉันจะใช้ได้อย่างไร
8 bash  ping 

5
Bash - ตรวจสอบไดเรกทอรีของไฟล์จากรายการชื่อไฟล์บางส่วน
ฉันมีเซิร์ฟเวอร์ที่รับไฟล์ต่อไคลเอนต์ในแต่ละวันลงในไดเรกทอรี ชื่อไฟล์ถูกสร้างขึ้นดังนี้: uuid_datestring_other-data ตัวอย่างเช่น: d6f60016-0011-49c4-8fca-e2b3496ad5a7_20160204_023-ERROR uuid เป็นรูปแบบมาตรฐาน uuid datestringdate +%Y%m%dคือผลลัพธ์จาก other-data มีความยาวผันแปรได้ แต่จะไม่มีขีดล่าง ฉันมีไฟล์รูปแบบ: # d6f60016-0011-49c4-8fca-e2b3496ad5a7 client1 d5873483-5b98-4895-ab09-9891d80a13da client2 be0ed6a6-e73a-4f33-b755-47226ff22401 another_client ... ฉันต้องตรวจสอบว่า uuid ทุกรายการในไฟล์มีไฟล์ที่เกี่ยวข้องในไดเรกทอรีโดยใช้ bash ฉันได้มาไกลขนาดนี้ แต่รู้สึกว่าฉันมาจากทิศทางที่ผิดโดยใช้คำสั่ง if และฉันต้องวนซ้ำไฟล์ต่างๆในไดเรกทอรีต้นทาง ตัวแปร source_directory และ uuid_list ได้รับการกำหนดไว้ก่อนหน้าในสคริปต์: # Check the entries in the file list while read -r uuid name; do # …

2
ติดตั้ง Ctrl + R /“ Mint-i-search” ของ Linux Mint Cinnamon บน Ubuntu หรือไม่
ใน Mint เมื่อคุณกดCtrl+ Rในเทอร์มินัลใด ๆ คุณจะได้ UI ที่ดีงามสำหรับ reverse-i-search (เพื่อชี้แจง - ฉันหมายถึงความพิเศษของโปแลนด์ใน Mint - UI เป็นขั้นตอนเหนือการค้นหาประวัติพื้นฐานที่ฉันคุ้นเคยใน Ubuntu และ distros อื่น ๆ ) ฉันต้องการสิ่งนี้ในกล่อง Ubuntu ของฉัน ฉันไม่แน่ใจว่าเป็นฟีเจอร์ Mint หรือฟีเจอร์ Cinnamon หรือเครื่องมือของบุคคลที่สามที่สามารถติดตั้งได้ Googling ไม่ได้ส่งคืนอะไร ... มีวิธีในการติดตั้งคุณลักษณะนี้บน Ubuntu หรือไม่? สะระแหน่: อูบุนตู / อื่น ๆ :

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