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

สคริปต์คือชุดคำสั่งที่เขียนในไฟล์ "ข้อความธรรมดา" ตัวแปลสคริปต์ (ตัวอย่างเช่น Bash หรือ shell อื่น, Python, Perl, Ruby, ฯลฯ ) อ่านไฟล์และดำเนินการตามคำแนะนำราวกับว่าพวกมันถูกป้อนที่ command prompt


2
ตัวแปรไม่แยกวิเคราะห์เป็นสตริง
ปัญหา ฉันพยายามแยกระดับสัญญาณ wifi ในวิธีต่อไปนี้ในสคริปต์ทุบตี (คำพูดดูเหมือนจะไม่แตกต่างกัน): string="$(iwconfig wlan0 | grep -I Signal)" ถ้าฉันecho $stringฉันได้รับสิ่งที่ฉันคาดหวัง: Link Quality=63/70 Signal level=-47dBm แต่ถ้าฉันลองรับสายอักขระย่อยecho ${string:5}มันจะส่งคืนสิ่งเดียวกัน debuging: ถ้าฉันวางผลลัพธ์wconfig wlan0 | grep -I Signalโดยตรงลงในตัวแปร: string="Link Quality=63/70 Signal level=-47dBm"ทุกอย่างทำงานตามที่คาดไว้ echo $string # Link Quality=63/70 Signal level=-47dBm echo ${string:5} # Quality=63/70 Signal level=-47dBm คำถาม:ตามอินเทอร์เน็ตตัวแปรทุบตีทั้งหมดจะถูกเก็บเป็นสตริงอักขระ ดังนั้นผลลัพธ์การดีบักควรเหมือนกันกับปัญหาดั้งเดิมของฉัน มีเหตุผลบางอย่างที่ไม่แยกวิเคราะห์ข้อความในปัญหาดั้งเดิมหรือไม่?

4
เรียกใช้สคริปต์ Bash ในโฟลเดอร์ทั้งหมดในเวลาเดียวกัน
สมมติว่าฉันมี.shสคริปต์Bash ( ) ห้าตัวในโฟลเดอร์ ( my_folder) และมีชื่อดังนี้: script_1.sh script_2.sh script_3.sh script_4.sh script_5.sh ฉันจะเขียนสคริปต์ Bash ที่หกหรือเพียงหนึ่งซับที่จะเริ่มทำงานสคริปต์เหล่านี้ด้วยกันได้อย่างไร ฉันต้องการสคริปต์ห้าตัวเพื่อเริ่มทำงานพร้อมกันในเวลาเดียวกันและไม่ใช่สคริปต์เดียว
10 bash  scripts 

2
การอ้างชื่อไฟล์มีความปลอดภัยเพียงพอหรือไม่ในการใช้งาน `xargs sudo rm -rf`?
ฉันเขียนสคริปต์ที่ลบทั้งหมดยกเว้นไฟล์สองไฟล์สุดท้ายในโฟลเดอร์: #!/bin/bash ls -1 --quoting-style=shell-always /path/to/some/folder \ | head -n -2 \ | xargs printf -- "'/path/to/some/folder/%s'\n" \ | xargs sudo rm -rf สคริปต์นี้จะถูกเรียกใช้เป็นงาน cron ทุกวัน เหตุผลมีดังนี้: รับรายการไฟล์ทั้งหมดโดยใช้ls -1(เพื่อให้ได้หนึ่งไฟล์ต่อบรรทัด); นำสองคนสุดท้ายจากรายการใช้head -n -2; ตั้งแต่lsพิมพ์พา ธ ที่สัมพันธ์กันให้ใช้xargs printfสิ่งต่าง ๆ เพื่อผนวกเส้นทางโฟลเดอร์และทำให้เป็นพา ธ สัมบูรณ์ ส่งพวกเขาไปใช้sudo rm -rfxargs ทุกคนสามารถเข้าถึงโฟลเดอร์นี้เพื่อให้ทุกคนสามารถสร้างและลบไฟล์ใด ๆ ในโฟลเดอร์นี้ ปัญหาคือ: sudo rm -rfน่ากลัว …

3
จะตรวจสอบสคริปต์ได้อย่างไรว่าเทอร์มินัลอีมูเลเตอร์ทำงานในเซสชันเดสก์ท็อปหรือไม่
ฉันมีสคริปต์ที่ฉันเรียกใช้ซึ่งเขียนไฟล์ข้อความจากนั้นเปิดในโปรแกรมแก้ไข ถ้าผมเปิดหน้าต่างจำลอง terminal geditในเซสชั่นสก์ท็อปของฉันและเรียกใช้สคริปต์ฉันต้องการแก้ไขที่จะเป็นหนึ่งในกราฟิกเช่น แต่ถ้าฉันเข้าสู่ระบบผ่าน ConnectBot บนโทรศัพท์หรือคล้ายกัน (เซสชั่นสก์ท็อปไม่ได้) nanoของฉันฉันต้องการแก้ไขให้เป็น ขณะนี้ฉันต้องรักษา 2 สคริปต์ที่แตกต่างกันเหมือนกันยกเว้นสำหรับขั้นตอนสุดท้าย (หรือปล่อยให้กราฟิกหนึ่งทำงานผิดพลาดจากนั้นเปิดไฟล์ด้วยตนเองnano) การมีสองสคริปต์ที่เหมือนกันส่วนใหญ่ไม่มีประสิทธิภาพจากมุมมองการบำรุงรักษา สคริปต์สามารถตรวจสอบว่าฉันอยู่ในสถานการณ์ใดและเปิดตัวแก้ไขที่ถูกต้องหรือไม่ (ฉันได้พบวิธีสำหรับสคริปต์ในการตรวจสอบว่ามันกำลังทำงานอยู่ในหน้าต่างเทอร์มินัลอีมูเลเตอร์หรือโดยการดับเบิลคลิก แต่ยังไม่พบวิธีตรวจสอบว่าหน้าต่างกำลังทำงานอยู่บนเดสก์ท็อป ... ฉันไม่คิดว่าฉัน รู้คำศัพท์ที่ถูกต้องเพื่อ google สำหรับ)

5
มีวิธีแสดงไอคอนเฉพาะขณะที่สคริปต์ของฉันทำงานหรือไม่
ฉันเป็นคนใหม่มากในการเขียนสคริปต์ นี่เป็นสคริปต์ง่าย ๆ (ใช้งานได้) ที่ฉันเขียนซึ่งจะแสดงรูปภาพเมื่อผ่านไป 5 นาที: sleep 300 && firefox file:///home/tasks/fiveminutes.jpg นี่คือคำถามของฉัน: บางครั้งฉันจำไม่ได้ว่าฉันเริ่มจับเวลาแล้วหรือยัง มีวิธีเพิ่มตัวบ่งชี้ข้อความหรือไอคอน (นึกคิดบนทาสก์บาร์ แต่จะดีมาก) ที่ปรากฏเป็นเวลา 5 นาที (จากช่วงเวลาที่ฉันเริ่มจับเวลาไปจนถึงช่วงเวลาที่ฉันจบ)? ขอบคุณมากสำหรับคำแนะนำใด ๆ
10 bash  scripts 

3
เป็นไปได้ไหมที่จะจับภาพหน้าจอของพื้นที่ที่เลือกเป็นวงกลม?
เมื่อเราถ่ายภาพหน้าจอของพื้นที่ที่เลือกไว้Ubuntu(โดยใช้Shift+ Prt ScrหรือCtrl+ Shift+ Prt Scr) เราจะเลือกพื้นที่สี่เหลี่ยมผืนผ้าเสมอ ดังนั้นฉันรู้ว่าฉันสามารถแก้ไขภาพในซอฟต์แวร์บางอย่างเช่น Inkscape เพื่อสร้างวงกลมด้วยภาพสี่เหลี่ยม แต่ฉันต้องการทราบว่ามีการกำหนดค่าที่ฉันสามารถเปลี่ยนเพื่อให้สามารถเลือกรูปร่างที่แตกต่างกันหรือไม่ ) โดยตรงเมื่อฉันกำลังจับภาพหน้าจอ เป็นไปได้ไหม?

3
ฉันจะสร้าง CLI Web Spider ที่ใช้คำหลักและตัวกรองเนื้อหาได้อย่างไร
ฉันอยากพบบทความของฉันภายใน (เก่า) ฟอรั่มเลิกวรรณกรรมe-bane.net โมดูลฟอรัมบางส่วนถูกปิดใช้งานและฉันไม่สามารถรับรายการบทความโดยผู้เขียน นอกจากนี้เว็บไซต์ยังไม่ได้จัดทำดัชนีโดยเครื่องมือค้นหาเช่น Google, Yndex เป็นต้น วิธีเดียวในการค้นหาบทความของฉันทั้งหมดคือการเปิดหน้าเก็บถาวรของเว็บไซต์ (รูปที่ 1) จากนั้นฉันจะต้องเลือกปีและเดือนที่แน่นอน - เช่นมกราคม 2013 (รูปที่ 1) และจากนั้นฉันต้องตรวจสอบแต่ละบทความ (รูปที่ 2) ไม่ว่าในตอนแรกจะเขียนชื่อเล่นของฉัน - pa4080 (รูปที่ 3) แต่มีไม่กี่พันบทความ ฉันได้อ่านหัวข้อดังต่อไปนี้ แต่ไม่มีวิธีใดที่ตรงกับความต้องการของฉัน: ใยแมงมุมสำหรับ Ubuntu วิธีเขียน Web spider บนระบบ Linux รับรายการ URL จากเว็บไซต์ ผมจะโพสต์วิธีการแก้ปัญหาของตัวเอง แต่สำหรับฉันมันน่าสนใจ: มีวิธีที่สง่างามกว่านี้ในการแก้ไขงานนี้หรือไม่?

2
สคริปต์ทุบตี: ผลลัพธ์ที่แตกต่างเมื่อเรียกด้วยหรือไม่ใช้ sudo
ใน Ubuntu 16.04.3 ฉันมีสคริปต์ทุบตีง่ายมาก: test.sh [[ 0 == 0 ]] && result="true" || result="false" echo $result echo $USER $SHELL $0 เมื่อฉันเรียกมันว่าเป็นผู้ใช้ที่ไม่ใช่รูทmeหรือrootทำงานได้ตามที่คาดไว้ ถ้าฉันใช้sudo ./test.shมันบ่นเกี่ยวกับข้อผิดพลาดทางไวยากรณ์: $ ./test.sh true me /bin/bash ./test.sh $ sudo su # ./test.sh true root /bin/bash ./test.sh # exit $ sudo ./test.sh ./test.sh: 1: ./test.sh: [[: not found false …
10 bash  scripts  sudo 

2
เหตุใด mkdir จึงล้มเหลว (ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว) ในสคริปต์ที่มี BIN_DIR =“ ~ / bin /”
เหตุใดคำสั่ง mkdir จึงล้มเหลวด้วย: "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว"? #!/bin/bash set -e BIN_DIR="~/bin/" if [ ! -d "$BIN_DIR" ]; then mkdir "$BIN_DIR" fi


2
ฉันจะจัดกลุ่ม windows ให้เป็นหนึ่งเดียวได้อย่างไร
ฉันมีหน้าต่างสองบาน A และ B เป็นไปได้ไหมที่จะเชื่อมโยงหน้าต่างสองบานเข้าด้วยกันดังนั้นการสลับไปที่ A จะเพิ่ม B หรือการสลับไปที่ B จะเป็นการเพิ่ม A หรือไม่ ฉันเข้าใจว่าการใช้เวิร์กสเปซหลายตัวเป็นทางเลือกอื่น แต่สงสัยว่ามันจะเป็นไปได้ไหม

2
มีซอฟต์แวร์ที่ใช้ติดตามหน้าต่างและแอปพลิเคชั่นหรือไม่
มีซอฟต์แวร์ที่ช่วยให้เวลาในกิจกรรมของฉันและให้รายงานหรือไม่ ขึ้นอยู่กับหน้าต่างที่เน้นและชื่อหน้าต่าง รายงานจะแสดงเวลาที่ใช้สำหรับหน้าต่างเฉพาะและชื่อเช่น: Application Title Time Firefox Ask Ubuntu - Mozilla Firefox 5:58
10 scripts  window  log  time  focus 

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

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

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